有一个问题来自于我的先前的问题,涉及正则表达式。我现在无法理解我得到的结果之间的差异,并且担心可能是解析库中的错误或其他问题。
因此,最初的问题是要替换所有给定字符串中的
我尝试使用以下正则表达式来仅替换给定示例中的第一个
最令人惊讶的是,这个正则表达式在不同的工具/语言中会产生不同的结果。以下是我得到的结果的简要总结:
似乎非捕获组被简单地忽略了。那么,出了什么问题,为什么结果不同,以及解决最初问题的正确正则表达式是什么?
因此,最初的问题是要替换所有给定字符串中的
:/
,除了可能在该给定字符串中的标签内的那些。给定的初始字符串为:not feeling well today :/ check out this link <a href="http://example.com">http://example.com</a>
我尝试使用以下正则表达式来仅替换给定示例中的第一个
:/
。 为了跳过标签内的出现,使用了非捕获组:/(?:<[^\/]*?.*?<\/.*?>)|(:\/)/g
最令人惊讶的是,这个正则表达式在不同的工具/语言中会产生不同的结果。以下是我得到的结果的简要总结:
- regex101.com 显示1次匹配!
- regexpal.com 显示2次匹配。
- regexr.com 显示2次匹配。
- regextester.com 显示2次匹配。
var s = 'not feeling well today :/ check out this link <a href="http://example.com">http://example.com</a>';
var replaced = s.replace(/(?:<[^\/]*?.*?<\/.*?>)|(:\/)/g, "smiley_image_here");
document.querySelector("pre").textContent = replaced;
<pre></pre>