Javascript正则表达式替换精确字符

时间:2011-05-24 15:48:07

标签: javascript regex replace

我有这段代码

htmlString= htmlString.replace( new RegExp( "WW(.+?)WW", "gim" ),
    "<span style='color:red;border-bottom:1px dashed red;'>$1</span>" );

这似乎有效,但它正在取代网址中的www。我所拥有的是WW somestring WW我在WW之间剪切文本并替换它。但是,我似乎无法获得确切的char序列。我尝试了{WW} ^ WW [^ WW]结尾[$ WW]和变体。还试过\ bWW string \ bWW并且没有匹配。

任何帮助都会很棒,谢谢。

2 个答案:

答案 0 :(得分:4)

假设在开始WW之后和结束WW(例如空格)之前还有除字母数字字符之外的其他字符,那么您可以这样做:

htmlString = htmlString.replace(/\bWW\b\s*(.+?)\s*\bWW\b/g, 
    "<span style='color:red;border-bottom:1px dashed red;'>$1</span>" );

使用正则表达式对象而不是字符串文字使其更容易阅读。如果您在字符串文字中使用了\b,则意味着“退格” - 您需要在字符串文字中转义反斜杠,因此上述正则表达式将变为"\\bWW\\b\\s*(.+?)\\s*\\bWW\\b"

答案 1 :(得分:0)

如果您要替换的文本始终为大写且您不想替换的www始终为小写,那么您只需将"gim"替换为"gm":{{ 1}}表示忽略大小写。 i中的m在RegExp中没有任何意义,因此您可以缩减为"gim"