【发布时间】:2019-01-02 09:01:05
【问题描述】:
我有一个匹配一组数字和字母的正则表达式。但是,我希望能够排除任何三个连续的字母。这是为了防止意外形成单词或缩写。
我的表达如下。它还排除了一些相似的字符,如 0、o、O 和 1、i、I、l):
^[2-9a-hjkmnp-zA-HJ-NP-Z]{4}$
这匹配像 24rQ 和 1234 这样的字符串。但我希望它与2dmv 不匹配。因为,在这种情况下,这可能包含已知的缩写(正或负)。
https://regex101.com/r/bbiQWD/1/
一个麻烦的方法是写出所有的组合。我写了一个速记(包括类似的字符)作为例子。但这不是那么易读或易于解释/维护。
(^\d{4}$)|
(^\d{3}\w$)|
(^\d{2}[\d\w]{2}$)|
(^\d{1}[\d\w]{2}\d{1}$)|
(^\d{1}\w{1}\d{1}\w{1}$)|
(^[\d\w]{2}\d{1}[\d\w]{1}$)|
(^\w{1}\d{1}[\d\w]{2}$)
https://regex101.com/r/bbiQWD/2
有没有更好的方法来查找三个连续的字母?
【问题讨论】:
标签: javascript regex regex-lookarounds