gpt4 book ai didi

javascript - 正则表达式检测具有 2+ 个数字和 2+ 个字符的单词

转载 作者:行者123 更新时间:2023-12-01 07:46:12 26 4
gpt4 key购买 nike

我需要一个正则表达式来检测长度为 8 个字符且包含 2 个以上数字和 2 个以上字符(无特殊字符)的单词。

我接近解决方案了,我在 regex101.com 上做了正则表达式。

问题是包含一个与我的正则表达式不相关的数字的单词。

我用 (?![A-Za-z]{7,}) 丢弃了所有包含最少 7 个字符的单词。

我用 (?![\d]{7,}) 丢弃了所有包含最少 7 个数字的单词。

我丢弃了包含最少 2 个数字和 2 个字符的单词 (?=[a-zA-Z\d]{2})[A-Za-z\d]{8}.

为什么匹配vaff8loe

我创建这个正则表达式是因为在我必须用 ******* 替换整个单词之后。喜欢:

papave23 ciao il mio pin papaver1 è reeredji332ji con vaff8loe 1234567o 123t123t papavero 9o 123t123y

替换后("regex","********")

********ciao il mio pin papaver1 è reeredji332ji con ******** 1234567o ******** papavero 9o ********

最佳答案

使用 2 个零宽度正前瞻:

(?=.*?[a-zA-Z].*?[a-zA-Z])    Must contain 2 ASCII letters
(?=.*?[0-9].*?[0-9]) Must contain 2 digits
[a-zA-Z0-9]{8} Must be exactly 8 letters and/or digits

如果不使用 matches() 来运行正则表达式,请添加 ^$

这意味着完整的正则表达式:

^(?=.*?[a-zA-Z].*?[a-zA-Z])(?=.*?[0-9].*?[0-9])[a-zA-Z0-9]{8}$

为获得最佳性能,请将 . 模式替换为负字符类。在这种情况下,您可能希望使用重复的非捕获组来缩短它:

(?=(?:[^a-zA-Z]*[a-zA-Z]){2})
(?=(?:[^0-9]*[0-9]){2})

更新

由于问题已更新为需要正则表达式来用 * 替换此类单词,因此 ^$ anchor 应更改为 \b 单词边界模式,负字符类必须更改为仅跳过有效字符:

s = s.replaceAll("\\b(?=(?:[0-9]*[a-zA-Z]){2})(?=(?:[a-zA-Z]*[0-9]){2})[a-zA-Z0-9]{8}\\b", "********");

参见 regex101用于演示。

请注意,给定示例中的 vaff8loe 仅包含一位数字,因此不应替换。

关于javascript - 正则表达式检测具有 2+ 个数字和 2+ 个字符的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56173563/

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