正则表达式替换单词两端的空格

时间:2015-06-28 06:20:43

标签: javascript regex

enter image description here

http://jsfiddle.net/xaekh8op/13/

/(^|\s):bin:(\s|$)/gm

无法扫描并替换中间的那个。 如何在不重复replace()两次的情况下解决这个问题。

3 个答案:

答案 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;
&#13;
&#13;

答案 2 :(得分:-1)

有时候正则表达式会出现问题变得复杂,在这些时候使用字符串函数如contains,replace和substring更好。 请注意,正则表达式并不总是从字符串中获取数据的好选择。