Соответствие номерам фиксированного формата в регулярном выражении - PullRequest
1 голос
/ 20 марта 2009

Быстрый вопрос регулярных выражений (так как я ужасен в этом)

У меня есть поле, которое может иметь только:

XXXXXXXXXX или XXXXXX-XXXX, где X - действительное число.

Бонус, если регулярное выражение хорошо работает с функциями регулярного выражения PHP.

Ответ:

Вот код ответа Роборга , для тех, кто заинтересован.

if(!preg_match("/^\d{6}-?\d{4}$/", $var))
{
    // The entry didn't match
}

Ответы [ 3 ]

8 голосов
/ 20 марта 2009
/^\d{6}-?\d{4}$/

Это

^     Start of string
\d{6} a digit, repeated exactly 6 times
-?    an optional "-"
\d{4} a digit, repeated exactly 4 times
$     end of string
1 голос
/ 20 марта 2009

Просто быстро, это будет примерно так: \d{6}-?\d{4}

Возможно, вам придется избежать дефиса в PHP.

0 голосов
/ 20 марта 2009

Если вы хотите конкретное число (формулировка вопроса изначально была несколько неоднозначной), найдите (например,):

^123456-?7890$

Если вы ищете любой 10-значный номер в этом формате, найдите:

^\d{6}-?\d{4}$

Квалификатор ? после тире означает «0 или 1 вхождение предыдущего объекта»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...