我有一个使用正则表达式进行验证的文本,
除了字母(i,o,q)之外,允许文本字段包含所有字符a-z和0-9。
我尝试过这样的事情,但无法让它工作'/[^(oOiIqQ)]/'
答案 0 :(得分:1)
这种排除的一种简单方法是使用否定前瞻。陈述你想要的东西:
/^(?:[a-z0-9])+\z/i
然后排除您不想要的项目:
/^(?:(?![ioq])[a-z0-9])+\z/i
答案 1 :(得分:0)
您不能在[...]中使用括号。
你必须使用'/ [0-9a-hj-npr-zA-HJ-NPR-Z] /'
之类的东西如果您想确保您的文字只包含这些字符,请使用:
'/^[0-9a-hj-npr-zA-HJ-NPR-Z]+$/'
因此,您可以匹配包含任意数量的字符的字符串,并且只匹配那些字符。
答案 2 :(得分:0)
这可能有效:[a-hj-npr-z]
也许您可以在正则表达式的末尾添加标记i
,以防不区分大小写。
(您将允许除您指定的字符之外的所有字符)
if (preg_match('#^[0-9a-hj-npr-z]+$#i', $string)) {
//string OK
}
答案 3 :(得分:0)
也许像这样/^[0-9a-hj-npr-z A-HJ-NPR-X]+$/
答案 4 :(得分:0)
我会假设你的一点点改变,并会尝试:
^[^oOiIqQ]+$
答案 5 :(得分:0)
有一个非常简单的解决方案,它考虑了负面的regexing(这使得正则表达式更短,更具可读性)
[^ioqIOQ]+