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

时间:2012-08-03 19:52:01

标签: javascript regex

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

-?[_a-zA-Z]+[_a-zA-Z0-9-]*

但我需要找到一种方法来使用它删除所有无效字符。

我想的是:

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

3 个答案:

答案 0 :(得分:16)

使用^运算符和g对您现有的正则表达式进行非常小的修改:

/[^a-zA-Z0-9_-]+/g

应该用作:

var newClass = userInput.replace(/[^a-zA-Z0-9-_]/g, '');

^字符作为括号[]中的第一个字符,指定与括号中的匹配(即 - 要删除的字符)。
g修饰符对整个输入字符串执行全局匹配。

答案 1 :(得分:2)

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

答案 2 :(得分:2)

var newClass = userInput.replace(/\W/, "");

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

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