我需要一个preg_match的正则表达式来接受所有字母数字字符,除了l,L,v,V,0,2。
我试过了
^[a-zA-Z0-9][^lLvV02]*$除lLvV02外,它的工作原理很好,但它也接受其他字符,如空格、ù、@、#等.
我该怎么改呢?
发布于 2019-04-01 18:52:31
你可以用
^(?:(?![lLvV02])[a-zA-Z0-9])*$详细信息
^ -字符串的开始(?: -非捕获组的开始(?![lLvV02])[a-zA-Z0-9] -一个不是字符类中的字符的alnum char,它驻留在负前瞻性中。
)* -结束,0次或多次重复$ -字符串的结尾

发布于 2019-04-01 19:04:11
我知道您要求使用Regex,但是您可以先测试字母数字,并且只有通过检查,确认其他的不存在时才能进行测试:
if(ctype_alnum($string) && !preg_match('/[lLvV02]/', $string)) {
//pass
} else {
//fail
}或者可能替代preg_match('/^[^lLvV02]+$/', $string)。
发布于 2019-04-01 19:16:44
最简单的可能是:^[a-km-uw-zA-KM-UW-Z13-9]*$。我不是说它很漂亮,但它做了它应该做的。
https://stackoverflow.com/questions/55461708
复制相似问题