我希望替换并非由-
字母的所有符号,但我的代码不起作用:的Javascript:更换REG EXP
$reg = '/[^a-zA-Z]+/g';
$txt = $txt.replace($reg, '-');
我在做什么错?
我希望替换并非由-
字母的所有符号,但我的代码不起作用:的Javascript:更换REG EXP
$reg = '/[^a-zA-Z]+/g';
$txt = $txt.replace($reg, '-');
我在做什么错?
您需要取消报价的正则表达式字符串,它是作为一个正则表达式文本处理,所以你得到这样的:
$reg = /[^a-zA-Z]+/g;
$txt = $txt.replace($reg, '-');
在JavaScript正则表达式不需要被引用为字符串,除非使用new Regexp()
表示法;在上例中,它现在是一个正则表达式文字,它不被视为字符串,而是作为.replace()
中使用的一条正则表达式。
删除您的正则表达式附近的引号。
如果要与一个连字符,然后你的正则表达式将工作代替你的意图已经连续多个非字母字符。如果你想用多个连字符代替多个非alpha字符,那么你也应该删除+
符号。
JavaScript中的正则表达式不是字符串。
reg = /[^a-z]+/gi;
txt = txt.replace(reg, '-');
你不需要在他们周围加引号。
不要在正则表达式中使用引号。没有引号,它们是RegEx对象。用引号,它们只是字符串。
使用,
$reg = /[^a-zA-Z]+/g;
我投票+1使用'/ i'而不是'[A-ZA-Z]'和+17有关变量去除'$'。 – 2012-02-06 20:41:22
可能会很高兴在那里有一些'var',不过:p – Phrogz 2012-02-06 21:12:48
@Progrog从OP的问题推断变量已经被声明(因为他在他的例子中没有使用var)。虽然是的,但在代码/函数/任何情况下都会很好。 – 2012-02-07 12:33:08