如何编写正则表达式来匹配'012356789'(没有4)

时间:2012-07-18 09:45:31

标签: regex

目前,我正在使用[012356789],但还有其他方法可以实现“没有4的所有数字”吗?

4 个答案:

答案 0 :(得分:6)

你可以试试这个正则表达式:

[0-35-9]

答案 1 :(得分:4)

要确保该字符串仅包含数字4以外的数字,您可以使用:^[0-35-9]+$^表示字符串的开头,[0-35-9]表示不包括数字4的任何数字,+表示一个或多个,$结尾字符串。

答案 2 :(得分:2)

对于这种简单的情况,对方建议绰绰有余。对于更复杂的情况,您可以使用以下内容:

(?!4)[0-9]

当您使用字符类并且想要排除单个字母时,这会很好。 (例如,x以外的任何字母)。这意味着:not followed by 4, any digit 0-9

正如@stema所指出的,从长远来看,这将使正则表达式更“复杂”。如果你想添加一个量词,你有两个“正则表达式元素”而不是一个,所以你需要:

(?:(?!4)[0-9])

?:表示该组不是捕获组)

答案 3 :(得分:2)

另一种可能性是

[^\D4]

\D不是一个数字,所以在一个否定的字符类中它会匹配一个数字,然后你可以将“4”添加到否定的类中以将其从允许的字符中排除。

here on regexr