我需要一个正则表达式来检测长度为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
用replace(“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})
更新
由于问题已更新为需要用正则表达式来用*代替此类单词,应将^
和$
锚点更改为\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
仅包含1位数字,因此不应替换。
好的,我有一个来自后面代码的方法,可以创建一个popupwindow。然后有一行代码要在那之后执行,我想知道那行代码何时执行,是在使用popupwindow之后执行还是在创建popupwindow之后执行?例如:void exPopupWindowMethod() { string scr = "window.open('exampleP…
Javascript-Urls的奇怪字符串比较行为 - javascript最近,在编写我无法理解的javascript时遇到了字符串比较的问题。我从完全相同的网址创建了两个字符串,当我比较它们时返回false,但是在重新分配相同的字符串后,比较返回true。这是我的示例:var str1 = "http://google.com/"; var str2 = "http://google.com/…
用绝对值替换字符 - javascript当搜索我的数据库时,除“ +”外,所有特殊字符都起作用-它认为它是一个空格。在后端是python时,接收特殊字符没有问题,我相信这是Javascript的前端我需要做的是替换“ +” ==“%2b”。有没有办法让我使用create this,使其具有不断增长的价值? 参考方案 您可以使用decodeURIComponent('%2b'),…
在两个值之间匹配并返回正则表达式 - javascript我正在尝试使用正则表达式从字符串中获取值,该值是tt="和"&之间的文本的值因此,例如,"tt="Value"&"我只想从中得到单词"Value"。到目前为止,我已经有了:/tt=.*&/这给了我"tt=Value"&,然后,要…
如何使用正则表达式提取JavaScript变量 - javascript我需要使用python脚本(2.7)从远程页面提取包含多行JSON的javascript变量,并且我想使用regex来执行此操作,但是我的模式未返回任何内容我究竟做错了什么 ?这是我的代码:request = urllib2.Request("http://somesite.com/affiliates/") result = urlli…