16

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

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

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

我在想类似的东西:

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

3 回答 3

36

使用^运算符 and对现有正则表达式进行非常小的修改应该可以工作g

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

应该用作:

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

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

于 2012-08-03T19:57:28.693 回答
3
var newClass = userInput.replace(/\W/, "");

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

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

于 2012-08-03T20:00:17.140 回答
2

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

于 2012-08-03T19:58:58.427 回答