Javascript 匹配正则表达式中单个字符的第n次出现

Javascript 匹配正则表达式中单个字符的第n次出现,javascript,regex,Javascript,Regex,我很难找到任何真正符合我需要的正则表达式,尽管这个请求在我开始时看起来很容易。希望在这里得到帮助 我们代码中的一个早期错误是以YYYY-MM-DD HH:MM:ss:SSS格式发送日期。这是无效的ISO,因为毫秒是由冒号而不是句号进行的 我想要一个与JS.replace结合使用的快速正则表达式来匹配第三个冒号:并用句号替换它。正如我所说的,这听起来很基本——但我没有发现任何可行的方法,也没有其他地方能在我的案例中找到针对类似问题的建议解决方案 非常感谢您的帮助。您可以使用/^?:[^:]*:{2

我很难找到任何真正符合我需要的正则表达式,尽管这个请求在我开始时看起来很容易。希望在这里得到帮助

我们代码中的一个早期错误是以YYYY-MM-DD HH:MM:ss:SSS格式发送日期。这是无效的ISO,因为毫秒是由冒号而不是句号进行的

我想要一个与JS.replace结合使用的快速正则表达式来匹配第三个冒号:并用句号替换它。正如我所说的,这听起来很基本——但我没有发现任何可行的方法,也没有其他地方能在我的案例中找到针对类似问题的建议解决方案

非常感谢您的帮助。

您可以使用/^?:[^:]*:{2}[^:]*:.*$/;?:[^::*:{2}匹配到第二个冒号,并且^?:[^:::*:{2}[^::**匹配从字符串开头到第三个冒号的字符串;*$匹配第三个冒号之后的所有内容;捕获第三个冒号之前和之后的内容,使用back引用重新格式化字符串:

console.logyyyyy-MM-DD HH:MM:ss:SSS.replace/^?:[^::*:{2}[^:*:.*$/,$1.$2您可以使用/^?:[^::::*:{2}[^::*:.$/;:[^::*:{2}匹配到第二个冒号,并且^?:[^:::*:{2}[^::**匹配从字符串开头到第三个冒号的字符串;*$匹配第三个冒号之后的所有内容;捕获第三个冒号之前和之后的内容,使用back引用重新格式化字符串:

console.logyyyyy-MM-DD HH:MM:ss:SSS.replace/^?:[^:]*:{2}[^:]*:.*$/,$1.$2