我需要一个正则表达式进行preg_match才能接受除l
,L
,v
,V
,0
,2
以外的所有字母数字字符
我尝试过
^[a-zA-Z0-9][^lLvV02]*$
除了lLvV02以外,它都可以正常工作,但它也可以接受其他字符,例如SPACE,ù,@,#等...
我应该如何更改?
答案 0 :(得分:0)
您可以使用
^(?:(?![lLvV02])[a-zA-Z0-9])*$
详细信息
^
-字符串的开头(?:
-一个非捕获组的开始
(?![lLvV02])[a-zA-Z0-9]
-否定字符,它不是字符类中位于负前瞻内的字符之一。)*
-非捕获组的结尾,重复0个或更多$
-字符串结尾请参见Regulex graph:
答案 1 :(得分:0)
我知道您要求使用正则表达式,但是您可以先测试字母数字,并且只有在通过后才能检查其他字符是否存在:
if(ctype_alnum($string) && !preg_match('/[lLvV02]/', $string)) {
//pass
} else {
//fail
}
或者可以替代preg_match('/^[^lLvV02]+$/', $string)
。
答案 2 :(得分:0)
最简单的可能是:^[a-km-uw-zA-KM-UW-Z13-9]*$
。
我并不是说它很漂亮,但是可以达到预期的效果。