gpt4 book ai didi

javascript - 正则表达式匹配字母和数字,除非有三个连续的(任意)字母

转载 作者:行者123 更新时间:2023-11-29 17:39:22 26 4
gpt4 key购买 nike

我有一个匹配一组数字和字母的正则表达式。但是我希望能够排除任何三个连续的字母。这是为了防止意外形成单词或缩写。

我的表达如下。它还排除了一些类似的字符,如 0、o、O 和 1、i、I、l):

^[2-9a-hjkmnp-zA-HJ-NP-Z]{4}$

这匹配像 24rQ1234 这样的字符串。但我希望它不匹配 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

有没有更好的方法来查找三个连续的字母?

最佳答案

在模式的开头,.?[a-zA-Z]{3} 的否定前瞻:

^(?!.?[a-zA-Z]{3})[2-9a-hjkmnp-zA-HJ-NP-Z]{4}$

https://regex101.com/r/bbiQWD/4

关于javascript - 正则表达式匹配字母和数字,除非有三个连续的(任意)字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54003589/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com