Регулярное выражение PHP между {x, y} - PullRequest
1 голос
/ 27 апреля 2011

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

/^[A-Za-z][A-Za-z0-9]*(?:_[A-Za-z0-9]+)*$/

Мне нужно убедиться, что длина передаваемой строки составляет от {4, 20} 4 до 20 символов, я рассмотрел другие более простые примеры, но это выражение немного сложнее. Куда бы я добавил "{4, 20}" в этом случае?

Ответы [ 3 ]

6 голосов
/ 27 апреля 2011

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

/^(?=.{4,20}$)[A-Za-z][A-Za-z0-9]*(?:_[A-Za-z0-9]+)*$/
3 голосов
/ 27 апреля 2011

Вот подход быстрого исправления, который будет работать в любом случае, когда вам нужно принудительно установить длину строки, независимо от регулярного выражения:

/^(?=.{4,20}$)[A-Za-z][A-Za-z0-9]*(?:_[A-Za-z0-9]+)*$/

Также вы можете использовать эту методику предварительного просмотра для накопления нескольких регулярныхвыражения.

0 голосов
/ 27 апреля 2011

Вы пробовали:

/^([A-Za-z][A-Za-z0-9]*(?:_[A-Za-z0-9]+)*){4,20}$/
...