具有特定长度的任何字符串的正则表达式模式

chu*_*byk 4 php regex preg-match

我想为preg_match构建模式,该模式将匹配长度为1到40个字符的任何字符串.我找到了这个:

^[^<\x09]{1,40}\Z
Run Code Online (Sandbox Code Playgroud)

但有了那个,我收到这个错误信息:

function.preg-match]: Unknown modifier '<' in ....
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

Håv*_*ard 10

/^.{1,40}$/ 应该匹配任何长度为1到40个字符的字符串.

它的作用是它需要.匹配所有东西,并重复1到40次({1,40}).该^$是在字符串的开头和结尾锚.


lon*_*day 7

如果你不在乎字符是什么,你就不需要正则表达式.使用strlen测试一个字符串的长度:

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

}
Run Code Online (Sandbox Code Playgroud)

这比启动PCRE引擎快得多.


附录:如果你的字符串可能包含多字节字符(例如é),你应该使用mb_strlen,这需要考虑这些字符.