2016-06-20 3 views
0

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

Что хочет клиент, так это то, что телефон должен содержать от 8 до 15 символов номеров, а также может содержать любые пробелы и точки в любом месте, которое не добавляет к количеству номеров. Итак, теоретически это должно быть действительно:

3   ....   44444444 

Потому что он содержит 9 чисел.

Я не могу идти дальше

~[0-9\.\ ]{8,15}$ 

но, очевидно, он считает точки и пробелы до предела тоже.

Возможно ли реализовать его через регулярное выражение?

+1

Это очень распространенный FAQ. Обычная рекомендация состоит в том, чтобы опустить незначительную пунктуацию, а затем выполнить простую проверку длины оставшейся строки. – tripleee

ответ

3

Regex попытка:

^(?:[ .]*\d){8,15}[ .]*$ 

Это будет соответствовать 8 до 15 цифр, с любым количеством пространства или точек происходит где угодно.

  • Не-захвачена группа, (?:[ .]*\d), соответствует любой цифре предшествует любое количество точки или пространств, {8,15} обеспечивает диапазон по номерам

  • [ .]*$ совпадает с любым количеством точки или пространств в конце

Demo

1

Насколько я знаю, регулярные выражения не могут подтвердить это. Однако вы могли бы, возможно, глобально удалить все пробелы и точки, а затем попытаться сопоставить регулярное выражение, которое ^[[:digit:]]{8,15}$

Смежные вопросы