最近我一直在 php 中使用 [a-z] 类范围正则表达式。我不知道为什么,但它不是只匹配 a 到 z 字符,而是还匹配控制字符。 示例:
preg_match("#^[a-z]{0,3}$#", "aa\n")
返回 1。(我使用的是 php 5.6)。 我想阻止控件字符匹配。我用 [:^cntrl:] 做了一些测试,但没有取得多大成功。 有人可以帮助我吗? 提前致谢。
最佳答案
$
anchor 可以匹配字符串末尾或字符串中最后一个换行符之前。
使用 /D
PCRE_DOLLAR_ENDONLY
修饰符:
preg_match("#^[a-z]{0,3}$#D", "aa\n")
^
或者 \z
anchor 匹配字符串的最末尾:
preg_match("#^[a-z]{0,3}\z#", "aa\n")
PHP test :
echo preg_match("#^[a-z]{0,3}$#", "aa\n"); // => 1
echo preg_match("#^[a-z]{0,3}$#D", "aa\n"); // => 0
echo preg_match("#^[a-z]{0,3}\z#", "aa\n"); // => 0
关于php - 如何防止 [a-z] 类型正则表达式匹配控制字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43887577/