我很难找到任何真正符合我需要的正则表达式,尽管这个请求在我开始时看起来很容易。希望在这里得到帮助。
我们代码中的一个早期错误是以 YYYY-MM-DD HH:mm:ss:SSS
格式发送日期。 。这不是有效的 ISO,因为毫秒以冒号而不是句点开头。
我想要一个快速的正则表达式与 JS .replace() 结合使用来匹配第三个冒号 :
并将其替换为句点 .
正如我所说,这听起来非常基本 - 但我没有发现任何有效的方法,并且在我的案例中,针对类似问题的建议修复也没有其他地方有效。
感谢任何帮助。
最佳答案
您可以使用 /^((?:[^:]*:){2}[^:]*):(.*)$/
; (?:[^:]*:){2}
匹配第二个冒号和 ^((?:[^:]*:){2}[^:]* )
匹配从字符串开头到第三个冒号的字符串; (.*)$
匹配第三个冒号之后的所有内容;捕获第三个冒号之前和之后的内容,使用反向引用重新格式化字符串:
console.log("YYYY-MM-DD HH:mm:ss:SSS".replace(/^((?:[^:]*:){2}[^:]*):(.*)$/, "$1.$2"))
或者针对此特定情况使用更简单的方法,将最后一个冒号替换为 。
:
console.log("YYYY-MM-DD HH:mm:ss:SSS".replace(/:(?=[^:]*$)/, "."))
关于javascript - 匹配正则表达式中单个字符的第 n 次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45069509/