Javascript 正则表达式-从与表达式不匹配的字符串中删除所有内容

Javascript 正则表达式-从与表达式不匹配的字符串中删除所有内容,javascript,regex,Javascript,Regex,我正在创建一个JavaScript函数,它将获取用户输入的值,并从中创建一个CSS类名。以下表达式可用于检测最终结果是否遵循有效的css规则 -?[_a-zA-Z]+[_a-zA-Z0-9-]* 但我需要找到一种方法来使用它删除所有无效字符 我在想这样的事情: var newClass = userInput.replace(EVERYTHING BUT /[_a-zA-Z0-9-]/, ""); 使用^操作符和g,对现有正则表达式进行非常小的修改就可以了: /[^a-zA-Z0-9_-]+

我正在创建一个JavaScript函数,它将获取用户输入的值,并从中创建一个CSS类名。以下表达式可用于检测最终结果是否遵循有效的css规则

-?[_a-zA-Z]+[_a-zA-Z0-9-]*
但我需要找到一种方法来使用它删除所有无效字符

我在想这样的事情:

var newClass = userInput.replace(EVERYTHING BUT /[_a-zA-Z0-9-]/, "");

使用
^
操作符和
g
,对现有正则表达式进行非常小的修改就可以了:

/[^a-zA-Z0-9_-]+/g
应将其用作:

var newClass = userInput.replace(/[^a-zA-Z0-9-_]/g, '');
^
字符作为括号内的第一个字符
[]
,指定与括号外的字符相匹配(即,要去除的字符)。

g
修饰符对整个输入字符串执行全局匹配。

var result=userInput.replace(/[^\w-]/g',)

\w等于[a-zA-Z0-9_]


\W等于[^a-zA-Z0-9\]

我注意到您更改了表达式中字符的顺序。任何原因都可以,或者只是偏好。它确实有助于提高可读性,提醒你。@MindWire只是我个人的喜好;我喜欢将字母数字字符放在第一位,符号放在最后(你也可以在网上找到大多数正则表达式示例)。是的,我认为它对可读性也有很大帮助@燃烧军团,谢谢你的礼仪编辑。将记住未来的职位。爱stackoverflow上的社区!缺少破折号作为可替换字符,但在解释\w\w功能方面做得很好。谢谢,我无法更好地解释它,因为我的同事就是这样回答我的。我看到了这个问题,问了一个知道的人,这样我就可以帮助OP了。
var newClass = userInput.replace(/\W/, "");