如何编写一个正则表达式来匹配 '012356789'(不包括4)?

3

目前,我正在使用[012356789],但是否有其他方法实现“所有数字都不包括4”?

4个回答

6
你可以尝试使用这个正则表达式:
[0-35-9]

这个正则表达式也应该匹配aaa0aaa - npinti
@npinti:这取决于你如何使用它。 - Tim Pietzcker

4
为了确保字符串只包含数字,但不包括数字4,您可以使用以下代码:^[0-35-9]+$。其中^表示字符串的开头,[0-35-9]表示任何数字,但不包括数字4+表示一个或多个,$表示字符串的结尾。

2

对于这种简单的情况,其他人提出的建议已经足够了。如果遇到更复杂的情况,你可以使用类似以下的方法:

(?!4)[0-9]

当您使用字符类并希望排除一个单独的字母时,这将是很好的选择(例如除了x以外的任何字母)。它的意思是:不跟随4、任何数字0-9

正如@stema所指出的那样,长期来看,这将使正则表达式更加“复杂”。如果您想添加一个量词,您需要两个“正则表达式元素”而不是一个,因此您需要:

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

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


好的,但是如果你想和量词一起使用,你需要先将它分组,就像这样(?:(?!4)[0-9])+ - stema

2
另一种可能的方法是:
[^\D4]
\D表示非数字,在否定字符类中,它会匹配一个数字,然后你可以将“4”添加到否定类中以排除它。在regexr上查看示例。

1
根据正则表达式方言,\d 可能是非欧洲数字,所以请注意 :-) - xanatos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接