Как написать это регулярное выражение? - PullRequest
2 голосов
/ 19 февраля 2010

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

Это для проверки поля номера телефона! Таким образом, эти критерии должны быть выполнены: (возможно, забыл критерий, если это напоминает мне)

 1- Atleast 5 numbers
 2- May contain space
 3- Not shorter than 5 characters
 4- Not longer than 20 characters
 5- May contain minus-sign
 6- Not empty

 if (nr.length>4 && nr.length<21 && nr!=''){

 }

Как мне написать регулярное выражение? Или оператор if?

Спасибо

Ответы [ 2 ]

3 голосов
/ 19 февраля 2010

Попробуйте это регулярное выражение:

^(?=(?:\D*\d){5})[\d -]{5,20}$

Предварительное утверждение (?=(?:\D*\d){5}) проверяет пять цифр. Остальные проверяют длину не менее 5 и не более 20 символов, которые могут быть только цифрами, пробелом или дефисом.

1 голос
/ 19 февраля 2010

Условие nr != '' является избыточным, поскольку сравнения длины уже исключают длину нуля.

Таким образом, если сравнить длины вне пути, похоже, что вы дошли до простого класса символовцифры, пробелы и тире:

/[\d\s-]{5,20}/

Конечно, это допускает такие вещи, как ----- или несколько пробелов.Поэтому, возможно, вы захотите сначала удалить все, что является , а не цифрой, а затем просто проверьте

/\d{5,20}/

, что, вероятно, будет проще.

...