Javascript使用RegEx替换字符串模式?

时间:2011-07-02 18:59:21

标签: javascript html string

我想删除方括号括起来的数字的字符串模式的任何出现,例如[1],[25],[46],[345](我认为括号内最多3个字符应该没问题)。我想用空字符串“”替换它们,即删除它们。

我知道这可以用正则表达式完成,但我对此很新。这就是我没有做的事情:

var test = "this is a test sentence with a reference[12]";
removeCrap(test);
alert(test);

function removeCrap(string) {

var pattern = new RegExp("[...]"); 
string.replace(pattern, "");

}

有人可以帮我解决这个问题吗?希望问题很清楚。感谢。

2 个答案:

答案 0 :(得分:3)

  1. []在正则表达式中具有特殊含义,它会创建character class。如果你想要字面上匹配这些字符,你必须逃避它们。

  2. replace [docs]仅替换字符串/表达式的第一个出现,除非您设置了全局标志/修饰符。

  3. replace 返回新字符串,它不会就地更改字符串。

  4. 考虑到这一点,应该这样做:

    var test = "this is a test sentence with a reference[12]";
    test = test.replace(/\[\d+\]/g, '');
    alert(test);
    

    正则表达式解释:

    在JavaScript中,/.../正则表达式文字g是全球旗帜。

    • \[字面上匹配[
    • \d+匹配一个或多个数字
    • \]字面上匹配]

    要详细了解正则表达式,请查看MDN documentationhttp://www.regular-expressions.info/

答案 1 :(得分:1)

这样做:

test = test.replace(/\[\d+\]/g, '');
  • \[因为[本身会引入字符范围
  • \d+ - 任意位数
  • \]如上所述
  • /g - 每次出现都会这样做

注意:您必须重新分配结果(要么是新变量,要么回到自身),因为String.replace不会更改原始字符串。