Regex разрешающие пробелы (для номера телефона regex) - PullRequest
4 голосов
/ 17 мая 2011

У меня есть это регулярное выражение:

preg_match("#^([0-9]+)$#", $post['telephone'])

, которые разрешают только номера (для номера телефона на французском языке, например, 0123456789), но я хотел бы разрешить пробелы. Например, разрешите этот тип строки: "01 23 45 67 89".

Не могли бы вы мне помочь?

Ответы [ 4 ]

3 голосов
/ 17 мая 2011

Если в вашей строке нормально есть пробелы, тогда все просто, просто добавьте его в свой класс символов

preg_match("#^([0-9 ]+)$#", $post['telephone'])

но это позволит 5 пробелов в начале.

^\d{2}(?: ?\d+)*$

было бы немного сложнее. Начинается с двух цифр, затем необязательная группа, начинающаяся с необязательного пробела, за которым следует не менее 1 цифры. эта группа может повторяться 0 или более раз.

Это будет соответствовать

01 23 45 67 89

0123456789

01234 5679

2 голосов
/ 04 мая 2016

Если вы хотите иметь ровно 8 цифр, например, но при этом разрешить произвольное количество пробельных символов, отлично подойдет следующее:

^(?:\s*\d){8}$

Или, если вы также хотите разрешить дефисы:

^(?:\s*-*\s*\d){8}$

1 голос
/ 17 мая 2011

В этом случае ничего не осталось, кроме цифр, пробелов и тире.

$input = '0123?> Abc -_#';
$output = preg_replace('#[^0-9- ]#', '', strtolower($input));
echo($output);

Хотите просто проверить (сопоставить и отменить) или очистить, попробовать и очистить и продолжить?

0 голосов
/ 17 мая 2011

Как насчет этого?

preg_match("/^\d(\s*\d)*$/", $post['telephone'])
...