php - 如何防止 [a-z] 类型正则表达式匹配控制字符

标签 php regex

最近我一直在 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/

相关文章:

php - HTML 电子邮件显示为代码而不是 css 页面

PHP + MySQL - 随机列出MySQL表中的所有数据

python - 向复杂的正则表达式添加异常

php - 我是否需要使用 JSON 将数据从外部 PHP 服务器传输到 Phonegap iPhone 应用程序?

php - Codeigniter:将整个 POST 请求发送到另一个 Controller 的方法

java - 正则表达式模式

javascript - 正则表达式在一个替换中分别替换两个单独的东西

c# - 正则表达式从用户定义的 id 中提取序列号

javascript - 如何使用 Regex 和 Javascript 获取字符串的第一个和最后一个字符

php - 导航栏不会使用 php 突出显示当前页面