PHP新手求助:正则表达式如何排除$£*并允许合法字符
嘿,这个正则需求很清晰,我来给你几个可行的方案!
方案1:直接定义允许的字符集(最推荐)
既然你明确只允许小写字母、大写字母和数字,那直接把这些字符放进正则的字符集里就好——这样$、£、*这些不在集合里的字符自然就被排除了。
如果是要验证整个输入字符串都由允许的字符组成,正则表达式如下:
^[a-zA-Z0-9]+$
^匹配字符串的开头[a-zA-Z0-9]匹配任意小写字母、大写字母或数字+确保至少有一个字符(如果允许空输入,把+换成*就行)$匹配字符串的结尾
方案2:用负向前瞻强制排除指定字符
如果你的场景需要更灵活(比如未来可能允许其他字符,但始终要排除这三个),可以用负向前瞻来确保输入中完全不包含$、£、*:
^(?!.*[$£*])[a-zA-Z0-9]+$
(?!.*[$£*])这部分是负向前瞻,意思是“整个字符串里不能出现$、£、*中的任何一个”- 后面的
[a-zA-Z0-9]+和方案1一样,确保只有允许的字符
针对你现有代码的修改
如果你之前的代码是把允许的字符和这三个排除字符混在一起了(比如类似[a-zA-Z0-9$£*]),那只需要把$、£、*从字符集里删掉,改成[a-zA-Z0-9]就可以达到需求啦。
内容的提问来源于stack exchange,提问作者Mark Fenwick
相关产品推荐
相关产品推荐

