我正在创建一个JavaScript函数,它将获取用户输入的值并从中创建一个CSS类名。以下表达式可用于检测最终结果是否遵循有效的css规则
-?[_a-zA-Z]+[_a-zA-Z0-9-]*
但我需要找到一种方法来使用它删除所有无效字符。
我想的是:
var newClass = userInput.replace(EVERYTHING BUT /[_a-zA-Z0-9-]/, "");
答案 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 _]