Member 13951173 Ответов: 1

Как сделать, чтобы символ " + " статические перед Как телефона кол-во +6016123456789 с помощью jQuery и регулярных выражений


Проблема, я думаю, заключается в том, что var regex = новое регулярное выражение("^[0-9]+$"); Я думаю, что это проблема, что я все еще могу вставить символ + в середине или в конце. Поэтому я хочу, чтобы это было похоже на +6016123456789, как это.

Что я уже пробовал:

Это тот самый код, который я пробовал, но он все тот же самый символ + может быть
кладут везде.

$('#hpno').keypress(function (e) {
        var regex = new RegExp("^[0-9]+$");
        var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
        if (regex.test(str)) {
            return true;
        }
        else
        {
        e.preventDefault();
        alert('Please Enter Valid Phone Number');
        return false;
        }
    });

1 Ответов

Рейтинг:
1

OriginalGriff

Если вам нужен один префикс"+", то попробуйте:

^\+?\d+$
Но... Я бы, наверное, использовал
^\+?\d{7,15}$
чтобы ограничить его максимальной длиной числа: План нумерации телефонов - Википедия[^]

Если вы собираетесь играть с регулярными выражениями, получите копию Экспрессо[^] - это бесплатно, и он проверяет и генерирует регулярные выражения.


jsc42

Решение @OriginalGriff проверяет все поле за один раз, поэтому измените #().keypress на #().change (я не эксперт jQuery) и протестируйте значение поля, а не нажатие клавиши события.

Member 13951173

У него все еще есть проблема, когда я попробовал тот, который вы рекомендуете, он прямо позволит алфавит

OriginalGriff

Нет, это не так - это регулярное выражение допускает только один (необязательный) ведущий "+", за которым следует от 7 до 15 цифр. Никакие Альфа-символы или знаки препинания не допускаются.

Я бы посоветовал вам использовать отладчик, чтобы посмотреть, что именно происходит - я подозреваю, что проблема находится в другом месте вашего кода...

Member 13951173

новое регулярное выражение("^[0-9]+$") означает ли это изменение вот так?

новое регулярное выражение("^\+?\d{7,15}$") <-- вот так?

OriginalGriff

Итак, вы говорите: "Я не пробовал, но это не сработало"?
Есть ли смысл кому-то пытаться помочь вам, если вы игнорируете то, что они говорят?

Member 13951173

Я действительно пытался, но это все еще позволяет алфавит

OriginalGriff

Тогда либо вы ввели его неправильно - и я не вижу вашего кода, - либо он находится где-то еще в вашем коде.
Что вам показал отладчик?

Member 13951173

Как это увидеть в notepad++ ??

OriginalGriff

Разве вы не знаете, как использовать отладчик?
Блокнот не является отладчиком - отладчик-это инструмент, который работает во время вашего кода deos и позволяет вам взять под контроль ваше приложение во время его работы, просматривать данные, следить за выполнением, одноступенчатыми строками и так далее.

Google поможет вам, если вы не знаете, что делать - это слишком много для такого маленького текстового поля, как это!