16

ユーザーが入力した値を取得し、そこからCSSクラス名を作成するJavaScript関数を作成しています。次の式を使用して、最終結果が有効なcssルールに従っているかどうかを検出できます。

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

しかし、それを使用してすべての無効な文字を削除する方法を見つける必要があります。

私は次のようなことを考えていました:

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

3 に答える 3

36

^演算子と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 に答える