javascript - 用于字母数字有限重复的正则表达式

标签 javascript regex

我有一个正则表达式来检查字母表的有限重复以及两个单独的正则表达式中的数字,但我试图组合成一个正则表达式,但它总是返回 true。

// Alphabetes testing:
/([a-z])\1{4,}/.test("sd0") => false
/([a-z])\1{4,}/.test("adsssssd0") => true
// Numeric testing:
/([0-9])\1{3,}/.test("sd00000ds") => true
/([0-9])\1{3,}/.test("sd00s00ds") => false
/(([a-z])\1{4,})|(([0-9])\1{3,})/.test("sd0sds0sds") => true // always true

谢谢。

最佳答案

直接使用

([a-z0-9])\1{3,}

查看here on Regexr

您的表达式的问题是捕获组的编号。它们按照左括号的顺序编号

(([a-z])\1{3,})|(([0-9])\1{3,})
12              34

因此,通过反向引用,您始终引用 (([a-z])\1{3,})。如果您引用组本身内部的组(递归),我不确定会发生什么。看起来它匹配每个字符 ( Regexr )

更新:

如果有不同的长度要求,那么你需要使用alternation,但是你需要在alternation中引用不同的组!

(?:([a-z])\1{4,}|([0-9])\2{3,})

(?: 是一个非捕获组 ==> 它不计入反向引用

查看here on Regexr

关于javascript - 用于字母数字有限重复的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14996564/

相关文章:

javascript - jQuery 显示选中或未选中的框

javascript - 无法获取 Canvas 内容的 toDataURL

javascript - 如何使用 npm 更新依赖项的依赖项

javascript - 如何使 javascript 在 Flask 上与 python 一起工作?

python - 如何使用正则表达式修改字符串的内容(就像 String.Replace 一样)

c# - 正则表达式从名称中提取首字母

javascript 正则表达式作为函数?

javascript - 为什么 iPhone iOS 显示 momentjs 的无效日期

javascript - Javascript 中的正则表达式

java - 多行java正则表达式中的反向引用