1

私は正規表現とJavaScriptが初めてで、入力フィールドに次のタイプの形式が含まれているかどうかを検出するための正規表現が何であるかを誰かが知っているかどうか疑問に思っていました:

スペースを含むことができない少なくとも 1 つの英数字とアンダースコア ( _ ) タグ (例: 「test」と「test_」、「test test」は除く)

単一のコンマで区切られた各タグ (例: "word1,word2,word_3, _word_4" で、"word1,,word2,word_3, _word_4 ではありません) およびその他の記号は無効です (;!"'@#%^&*( など)。 )-+=.>

私が意味することの例はこれです、これらは有効なタグになります:

something1,something_2,something_something,something これらは無効なタグになります。

何か1%,何か% 2^,!何か%_&何か,(*)何か@+

複数のタグも同様に、単一のタグも受け入れることができるはずです!!

ありがとう。

4

2 に答える 2

2

大文字と小文字の両方を受け入れたいと仮定します。

^[a-zA-Z0-9_]+(,[a-zA-Z0-9_]+)*$

上記のサイトには、正規表現に関する優れた情報があります。一読することをお勧めします。今のところ簡単な説明:

^は、文字列の先頭を意味し、他の (無効な可能性がある) 文字が先行することはありません。[との間]は文字クラスで、後に続く文字を指定します。[ABC]たとえば、A 、B、または C を意味します。また[A-E]、A、B、C、D、または E を意味する のような範囲を指定することもできます。

上記の正規表現では、 ato zAto Z(大文字)、0to 9、および単一の文字_. +文字、グループ、またはその前の文字クラスの文字が少なくとも 1 回以上出現する必要があることを意味します。

(and)は、正規表現の一部をグループ化します。この場合、,(必要なコンマ区切りリストの場合) とこれまでの式の繰り返しがグループ化されます。は*( のように+) その前のグループが何度も出現する可能性があることを意味しますが、*はそれをオプションにするという違いがあります。

要するに、この式では、 a ~ z、 ~ 0~ 9の範囲内の少なくとも 1 つ以上の文字で構成されるタグを許可し_、必要に応じて a で始まる複数のタグを続けて,、コンマ区切りリストの要件を指定します。 :)

于 2012-05-16T18:49:48.780 に答える
1

単一のタグは、

[a-zA-Z0-9_]+

これは、ラテン文字の大文字と小文字、および数字とアンダースコアを含む文字クラスです。これは通常、次のように短縮できます。

\w+

RE エンジンが Unicode を処理しないことがわかっている場合 (これは JavaScript の場合です)。とりあえず続けます\w+が。

単一のタグと、場合によってはゼロのコンマ+タグを選択することで、複数のタグに一致させることができます。

\w+(,\w+)*

完全な文字列を検証する場合は、式の前後に文字列の開始と文字列終了のアンカーを配置する必要があります。

^\w+(,\w+)*$
于 2012-05-16T18:30:15.577 に答える