正则表达式前瞻和"String End"不起作用



我想使用以下正则表达式将字符串与前瞻匹配:/A20.(?!4)/。此字符串应匹配:

A20.1
A20.2
A20.3
A20.41
A20.42
A20.400
...

唯一不应该匹配的A20*字符串是

A20.4

它运行良好,预期为A20.41或A20.42。如何终止regex?我试过/A20.(?!4)$/,但它不起作用。

您可以使用否定字符类,如[^4],这意味着"匹配除四个以外的所有";。但我认为您仍然希望只匹配数字,所以我只需要使用字符类[123567890](注意,4被排除在外(。

所以模式是:

A20.[123567890]

此外,您使用.(点(来匹配点,但点是特殊的正则表达式字符,因此您需要对其进行转义以按字面意思处理:.

您必须更加向前看。如果4后面还有另一个数字,那么匹配它,所以:

A20.((?!4)|(?=dd))

最新更新