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

Javascript 在单个组中捕获字符串中的连续非字母数字字符,javascript,regex,Javascript,Regex,我想用破折号替换字符串中的所有特殊字符。我使用以下正则表达式替换字符 var x = "Querty(&)keypad"; alert(x.replace(/[^A-Za-z0-9]/g, "-")); 但是,这会导致每个字符都替换为破折号,而不是用单个破折号替换连续字符。这个例子给出了输出query---keypad。我想要的输出是query小键盘 您可以从中看到问题。使用+匹配一个或多个重复: > "Querty(&)keypad".replace(/[^A-Za-z

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

var x = "Querty(&)keypad";
alert(x.replace(/[^A-Za-z0-9]/g, "-"));
但是,这会导致每个字符都替换为破折号,而不是用单个破折号替换连续字符。这个例子给出了输出
query---keypad
。我想要的输出是
query小键盘


您可以从中看到问题。

使用
+
匹配一个或多个重复:

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