正则表达式排除 4 个重复字符系列但捕获 2 个重复字符

RegEx to Exclude series of 4 repeating characters but catch 2 repeating characters

尝试在 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])\w*)d+(?:\b|$)/g

这就是我需要的,但我真的不明白它是如何捕捉第一组等的。有没有一种方法可以根据我的需要对其进行简化,或者有更简单的方法吗?

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

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

否定前瞻末尾的 \w* 不是必需的,它是多余的,就像否定前瞻中的任何其他可选子模式一样。

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