尝试在 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/