Javascript:替换正则表达式

时间:2012-02-06 20:33:39

标签: javascript regex replace

我想用-替换所有不是字母的符号,但我的代码不起作用:

 $reg = '/[^a-zA-Z]+/g';  
 $txt = $txt.replace($reg, '-');

我做错了什么?

4 个答案:

答案 0 :(得分:4)

JavaScript中的正则表达式不是字符串。

reg = /[^a-z]+/gi;
txt = txt.replace(reg, '-');

您不需要在它们周围加上引号。

答案 1 :(得分:3)

你需要取消引用正则表达式字符串,以便将其视为正则表达式文字,所以你得到这个:

$reg = /[^a-zA-Z]+/g;  
$txt = $txt.replace($reg, '-');

除非使用new Regexp()表示法,否则不需要将JavaScript中的正则表达式作为字符串引用;在上面的示例中,它现在是正则表达式文字,它不被视为字符串,而是在.replace()中使用的一段正则表达式。

答案 2 :(得分:2)

不要在正则表达式上使用引号。没有引号,它们是 RegEx 对象。引用它们只是字符串。

使用,

$reg = /[^a-zA-Z]+/g;

答案 3 :(得分:1)

删除正则表达式周围的引号。

如果您打算将一行中的多个非字母字符替换为单个连字符,那么您的正则表达式将起作用。如果您希望将多个非字母字符替换为多个连字符,则还应删除+符号。