我想用-
替换所有不是字母的符号,但我的代码不起作用:
$reg = '/[^a-zA-Z]+/g';
$txt = $txt.replace($reg, '-');
我做错了什么?
答案 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)
删除正则表达式周围的引号。
如果您打算将一行中的多个非字母字符替换为单个连字符,那么您的正则表达式将起作用。如果您希望将多个非字母字符替换为多个连字符,则还应删除+
符号。