RegEx排除4个重复字符的系列但捕获2个重复字符

时间:2016-10-27 14:44:11

标签: javascript regex regex-negation

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

我无法想出一个好的RegEx转换,

"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"

我搜索了一些示例,并且能够修改一个以获得此RegEx表达式,

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

这就是我所需要的,但我真的不明白它是如何与第一组一起工作的。有没有办法可以根据我的需要简化它,或者有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

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

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

负前瞻结束时的\w*不是必需的,它是多余的,与负前瞻中的任何其他可选子模式一样。

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

相关问题