Ada*_*dam 4 php regex preg-match
我正在使用这个正则表达式来测试用户名是否有效:
[A-Za-z0-9 _]{3,12}当我在文本编辑器中使用 string 测试匹配时test'ing,它会突出显示“test”和“ing”,但是当我在 PHP 中使用以下代码时:
if(!preg_match('/[A-Za-z0-9 _]{3,12}/', $content)$content 在哪里test'ing,它应该返回 FALSE,它仍然返回 true。
我的正则表达式有问题吗?我需要:
{3,12}[A-Za-z0-9 _]提前致谢...
您缺少正则表达式中的锚点,因此正则表达式可以轻松匹配字符串中任意字符类中的 3 个字符。这不是你想要的。您想检查您的正则表达式是否与整个 string匹配。为此,您需要包含锚点 (^和$)。
if(!preg_match('/^[A-Za-z0-9 _]{3,12}$/', $content)
^ ^
Run Code Online (Sandbox Code Playgroud)
^断言字符串开头的$位置并断言字符串末尾的位置。需要注意的是,这些元字符实际上并不消耗字符。它们是零宽度断言。
进一步阅读: