javascript - 正则表达式排除 4 个重复字符的序列,但捕获 2 个重复字符

标签 javascript regex regex-negation

尝试在 JavaScript 中提出一个流程来帮助在不同技术堆栈之间转换自定义日期格式,以便它们都以相同的方式解析和显示所有内容。

我在想出一个好的正则表达式来转换时遇到了困难,

“dddd,dd/MM/yyyy”“dddd,DD/MM/yyyy”

还有,

“ddd,dd/MM/yyyy”“ddd,DD/MM/yyyy”

我尝试过否定前瞻,并且知道我可以执行类似 (?!d{3,4}) 的操作来排除 dddd 和 ddd 集合。我知道我也可以执行 d{1,2} 来捕获 dd。但是当我把它们放在一起时,如 /(?!d{3,4})(d{1,2})/g 它也捕获了 dddd 中的最后两个 dd 并给了我

“ddDD,DD/MM/yyyy”

我四处寻找示例,并能够修改示例来获取此正则表达式,

/(?=\b|^)(?!d*([d])\1\1\w*)d+(?:\b|$)/g

这满足了我的需要,但我不太明白它是如何捕获第一组等的。有没有办法可以根据我的需要简化它,或者有更简单的方法吗?

最佳答案

/(?=\b|^)(?!d*([d])\1\1\w*)d+(?:\b|$)/g 正则表达式只匹配 dd 作为一个完整的单词。

\b (当后跟单词 char 时)也匹配字符串的开头,因此,使用 (?=\b|^) 没有意义,它与 ^ 相同。

负向先行末尾的 \w* 不是必需的,它是多余的,就像负向先行内的任何其他可选子模式一样。

因此,您可以使用/\bdd\b/g

关于javascript - 正则表达式排除 4 个重复字符的序列,但捕获 2 个重复字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40287619/

相关文章:

java - 是否可以使用正则表达式在完全括号表示中查找树的根?

正则表达式匹配所有未用引号引起来的出现并在字符处停止

R中的正则表达式否定

javascript - highcharts 图表中的导航器不起作用

javascript - 如何处理有时以对象数组形式返回、有时仅返回一个对象的 Json 数据?

javascript - 包含 15 位字母数字和逗号分隔符的正则表达式

java - 如何使用具有多个参数的分隔符

javascript - 在 Javascript 中打印 Javascript?

javascript - 在页面加载完成之前可以访问网页的标题吗?

javascript - 如何使用 JavaScript 正则表达式删除标签