我有以下正则表达式,检查字符串中是否有8个字符(字母或数字)后跟空格数字和逗号:
^.*[a-zA-Z0-9]{8,} \d*,.*$
以下Regex与以下内容不符:
Hello 23, abc 2, me 5,
但是匹配以下内容:
My8Chara 12, abc 2,
我想颠倒正则表达式。如果字符串不包含8个字符,后跟空格,数字和逗号,我想要正则表达式匹配。
有谁知道如何反转Regex?我不能使用像Regex.IsMatch这样的东西,因为我使用的是通用验证器。我必须用正则表达式写出来。
所需的输出是:
"" -> match
"abc 123, def 234," -> match
"my8chara 123, only5 12" -> does not match -> it contains 8 characters followed by a space a number and a comma
提前致谢, 圣拉斐尔
答案 0 :(得分:2)
您可以使用这样的负面预测:
^(?!.*[a-zA-Z0-9]{8,} \d*).+$
否定前瞻的格式为(?! ... )
。如果里面的内容匹配,则整场比赛将失败。
因此,如果匹配.*[a-zA-Z0-9]{8,} \d*
,则整个匹配失败。
编辑:如果您仍希望将句子与结构Hello 23, abc 2, me 5,
匹配,那么我建议:
^(?!.*[a-zA-Z0-9]{8,} \d*).*(?:[a-zA-Z0-9]+ \d*,)?.*$
答案 1 :(得分:1)