首页 > 解决方案 > 正则表达式前瞻和“字符串结束”不起作用

问题描述

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

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

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

A20.4

它工作正常,期待 A20.41 或 A20.42 .. 如何终止正则表达式?我试过/A20.(?!4)$/了,但是没有用。

标签: regexregex-lookarounds

解决方案


您可以使用否定字符类,例如[^4],这意味着“匹配除四个之外的所有内容”。但我认为你仍然只想匹配数字,所以我只是使用字符类[123567890](注意不包括 4)。

所以模式将是:

A20\.[123567890]

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


推荐阅读