Рейтинг:
2
Patrice T
[+0-9]
регулярное выражение соответствует только 1 символу, либо'+', либо цифре. Вам следует больше изучать регулярные выражения.
Всего лишь несколько интересных ссылок, которые помогут построить и отладить регулярное выражение.
Вот ссылка на документацию по регулярным выражениям:
perlre - perldoc.perl.org[
^]
Вот ссылки на инструменты, помогающие создавать регулярные выражения и отлаживать их:
.Объем тестер регулярное выражение - регулярное выражение шторм[
^]
Регулярное Средство Выражения Эспрессо [
^]
RegExr: Learn, Build, & Test RegEx[
^]
Онлайн-тестер регулярных выражений и отладчик: PHP, PCRE, Python, Golang и JavaScript[
^]
Этот пример показывает вам регулярное выражение в виде красивого графика, который действительно полезен для понимания того, что делает регулярное выражение:
Debuggex: онлайн-тестер визуальных регулярных выражений. JavaScript, Python и PCRE.[
^]
Этот сайт также показывает регулярное выражение в красивом графике, но не может проверить, что соответствует регулярному выражению:
Regexper[
^]
Рейтинг:
1
Jochen Arndt
Вы должны указать +
первый символ является необязательным за ним следуют только цифры и соответствует всему входу:
if(!txt.match(/^\+?[0-9]+$/))
Подробно объяснять:
^
Начало строки
\+
То
+
символ (здесь он должен быть экранирован обратной косой чертой)
?
Соответствует предшествующему нулю или одному времени
[0-9]
Только цифры
+
Соответствует предыдущему один или несколько раз
$
Конец строки
Дополнительным вариантом может быть ограничение количества цифр до минимума и максимума (здесь min. 6 и максимум. 16):
if(!txt.match(/^\+?[0-9]{6,16}$/))
Я предлагаю почитать о регулярных выражениях. Для JavaScript вы можете начать с
Регулярное выражение - JavaScript | MDN[
^].
Member 13951173
Я попробовал оба кода в своем кодировании, первый из которых он не может вставить символ+, а второй пример, который вы дали, не допускает четных чисел....:(
Jochen Arndt
Проблема не в регулярном выражении, а в том, где вы его вызываете. Мое регулярное выражение предназначено для проверки полной входной строки.
Я упустил из виду, что вы используете его в обработчике нажатия клавиш. Это не очень полезно для таких проверок, потому что вы можете обрабатывать только отдельные символы. Хотя вы можете проверить, что это знак + или цифра, вы не можете проверить, является ли фактическое нажатие клавиши первым символом или нет.
Вы можете оставить свой исходный код на месте, чтобы перехватить недопустимые символы (что может быть проще и быстрее выполнено с помощью проверки условия IF, если e.what() является цифрой или знаком+), и добавить обработчик для проверки всей входной строки. Там вы можете использовать регулярное выражение из моего решения.
Member 13951173
Значит, вот так????
jQuery(функция () {
$("#hpno").keyup(функция () {
ВАР вал = это.значение;
var phone = новое регулярное выражение(/^\+?[0-9]+$/);
если (телефон.тест(Валь)) {
предупреждение("отлично, вы ввели номер телефона");
}
});
});
Jochen Arndt
Нет. Это опять же для одного ключа.
Общий метод заключается в реализации функции проверки для всей формы или для каждого поля.
Пример для поля формы:
$('#hpno').on('input', function() {
var input=$(this);
// Apply regex to input here and act accordingly
});