答案 0 :(得分:1)
在:bin: :bin: :bin:
中,前两个:bin:
之间只有一个空格,而您的表达式不接受(左侧或右侧使用该空格)。
解决方案可能正在使用
/\s*:bin:\s*/g
但这也会与:bin::bin::bin:
匹配,并会替换:bin:
周围的所有空格。
如果你想要至少一个空格,除了开始/结束,那么你可以使用
/(^|\s):bin:(?=$|\s)/g
请注意,对于"零宽度前瞻断言后的空格"已被使用,以便空间不被消耗,可以考虑下一场比赛。但请注意,这意味着后面的空格不会包含在替换的段中。
答案 1 :(得分:0)
你在这里:
function custom() {
var str = document.getElementById('original').innerHTML;
var replacement = str.replace(/(^|\s+):bin:(\s+|$)|(:bin:)/gm, 'test');
document.getElementById('replaced').innerHTML = replacement;
}
custom()

<div id="original">:bin: abc :bin: 6666 :bin:</div>
<hr />
<div id="replaced"></div>
&#13;
答案 2 :(得分:-1)
有时候正则表达式会出现问题变得复杂,在这些时候使用字符串函数如contains,replace和substring更好。 请注意,正则表达式并不总是从字符串中获取数据的好选择。