如何在javascript中替换+?

时间:2012-10-26 12:45:50

标签: javascript

如何用unicode替换字符串中的字符'+'?

E.G.
  Before replace -> "table+end"
  After replace -> "table002Bend"

我尝试使用

  tableName.replace(/+/g,"002B);

但运行JS的浏览器抛出错误说明:

  

标识符无效

3 个答案:

答案 0 :(得分:3)

如果在正则表达式中使用它,则需要转义+。试试这种方式:

tableName.replace(/\+/g,"002B")

非转义加号是匹配一个或多个量词。

请注意,这个简单的替换甚至不需要正则表达式。

答案 1 :(得分:2)

两件事:+字符在正则表达式中具有特殊含义,如果你看一下你得到的错误:

  

SyntaxError:无效的正则表达式:/ + /:无需重复

您看到+实际上意味着:重复表达式的前一部分。您可以使用反斜杠,指定要替换文字+字符/\+/您可以创建字符类,其中您不需要逃避所有特殊字符:/[+]/

之后,由于缺少字符串分隔符,您可能仍会显示错误:

tableName.replace(/+/g,"002B);//<--missing closing "

总而言之,其中任何一个都应该做到这一点:

tableName.replace(/\+/g,"002B");
tableName.replace(/[+]/g,"002B");

如果你想“url-encode”一个字符串,为什么不简单地使用encodeURI(tableName)

答案 2 :(得分:1)

使用正则表达式,+在正则表达式中具有特殊含义,需要进行转义:

tableName = tableName.replace(/\+/g, '002B');

如果您只是替换单个+,则不需要正则表达式:

tableName = tableName.replace('+', '002B');

但是,需要注意的是,它只会替换遇到的第一个+。执行“快速”替换的解决方法是合并split()join()

tableName = tableName.split('+').join('002B');