PHP正则表达式如何允许匹配a-Z、0-9、()及[]字符?
解决正则表达式允许方括号[]的问题
嘿,刚接触正则确实容易在特殊字符上踩坑,你猜的没错——方括号在正则的字符集(就是[]包裹的部分)里属于特殊字符,直接加进去会出问题,得稍微处理一下才行!
两种可行的写法
1. 转义方括号(最稳妥,新手推荐)
把[和]都用反斜杠\转义,这样正则就会把它们当成普通字符处理。最终的正则表达式是:
/^[a-zA-Z0-9()\[\]]+$/
解释一下:
^和$分别匹配字符串的开头和结尾,确保整个字符串都符合规则(不会出现前面合法后面非法的情况)[a-zA-Z0-9()\[\]]是允许的所有字符集合:大小写字母、数字、圆括号,以及转义后的方括号+表示至少要有一个合法字符(如果需要允许空字符串,可以把+改成*)
2. 把方括号放在字符集的开头/结尾(不用转义)
在正则的字符集里,如果把[放在最开头,或者把]放在最结尾,它们会被当成普通字符,不需要转义。比如:
/^[[a-zA-Z0-9()]]+$/ // 或者 /^[a-zA-Z0-9()[]]+$/
不过这种写法虽然少打了两个反斜杠,但对新手来说可读性稍差,容易搞混,还是转义的写法更直观。
测试小例子
- 匹配成功的字符串:
Hello123()[]、abc[]()、123[] - 匹配失败的字符串:
Hello!、abc@123、[]{}()(因为包含了大括号)
内容的提问来源于stack exchange,提问作者seikzer
相关产品推荐
相关产品推荐

