捕获单个组中字符串中的连续非字母数字字符

Ish*_*ain 2 javascript regex

我想用破折号替换字符串中的所有特殊字符.我使用以下正则表达式来替换字符.

var x = "Querty(&)keypad";
alert(x.replace(/[^A-Za-z0-9]/g, "-"));
Run Code Online (Sandbox Code Playgroud)

但是,这会导致每个字符都被短划线替换,而不是用单个短划线替换连续的字符.这个例子给了我输出Querty---keypad.我想要的输出是Querty-keypad.

你可以在这个jsfiddle中看到这个问题.

fal*_*tru 7

使用+匹配1次或多次重复:

> "Querty(&)keypad".replace(/[^A-Za-z0-9]+/g, "-")
"Querty-keypad"
Run Code Online (Sandbox Code Playgroud)