正则表达式替换一组字符

时间:2015-07-11 08:55:10

标签: javascript regex

我想将+ - ( )space替换为Javascript字符串中的空字符。我使用的表达式是:

"+1 - (042) - 123456".replace(/[\+\-\' '\(\)]/, "");

导致:

"1 - (042) - 123456"

仅替换+而不替换其他字符。我的表达中的错误是什么?

4 个答案:

答案 0 :(得分:3)

当您使用方括号列出要移除/更改的字符或其他内容时,您不想逃避它们。我建议使用\s代替,当然,您需要全局标记 - g

"+1 - (042) - 123456".replace(/[+()\s-]/g, "")

答案 1 :(得分:2)

使用g标志:

/[\+\-\' '\(\)]/g

JS:

"+1 - (042) - 123456".replace(/[\+\-\' '\(\)]/g, "");

g表示“全局搜索”,这意味着必须替换正则表达式的每个匹配。

答案 2 :(得分:0)

您需要包含g全局标记才能使模式在同一行上匹配两次或更多次。而且你不需要在角色类中加入单引号。

"+1 - (042) - 123456".replace(/[-+() ]/g, "");

答案 3 :(得分:0)

正如他们在答案中提到的那样,你应该添加g(全局)标志,否则一旦找到第一个匹配函数就会停止。

但是,您的RegEx中有一些冗余转义和字符。

您的RegEx如何以最简单的形式出现:

Object

我没有理解你的RegEx中有单引号的原因。