шаблон регулярного выражения для любой строки определенной длины - PullRequest
4 голосов
/ 27 июня 2011

Я хочу построить шаблон для preg_match, который будет соответствовать любой строке длиной от 1 до 40 символов. Я нашел это:

^[^<\x09]{1,40}\Z

Но с этим я получаю это сообщение об ошибке:

function.preg-match]: Unknown modifier '<' in ....

Есть предложения?

Ответы [ 2 ]

10 голосов
/ 27 июня 2011

/^.{1,40}$/ должен соответствовать любой строке длиной от 1 до 40 символов.

Что он делает, так это то, что он принимает ., который соответствует всему, и повторяет его от 1 до 40 раз ({1,40}).^ и $ являются якорями в начале и конце строки.

7 голосов
/ 27 июня 2011

Если вам все равно, что за символы, вам не нужно регулярное выражение. Используйте strlen для проверки длины строки:

if ((strlen($yourString) <= 40) && (strlen($yourString) >= 1)) {

}

Это будет далеко быстрее, чем загрузка двигателя PCRE.


Приложение: если ваша строка может содержать многобайтовые символы (например, é), вы должны использовать mb_strlen, который учитывает эти символы.

...