6

2 つのコンマで区切られた少なくとも 3 つの単語を取得しようとしています。これまでのところ、1 つのコンマで 2 つの単語を一致させることができました

/([A-z]|[0-9])(,{1})([A-z]|[0-9])/ 

しかし、これにコンマと単語を追加するにはどうすればよいですか。同じことを繰り返してみましたが、うまくいきませんでした。

4

5 に答える 5

5

/^(?:\w+,){2,}(?:\w+)$/

これにより、少なくとも 3 つの単語 ([a-zA-Z0-9_]+) のコンマ区切りリストが取得されます。

/^\s*(?:\w+\s*,\s*){2,}(?:\w+\s*)$/

これは最初のバージョンよりもユーザーフレンドリーなバージョンで、単語間にスペースを入れることができます。

于 2012-04-04T08:33:10.123 に答える
2

それがPERL 派生の regexである場合、私が遭遇したほとんどの実装と/[^,]+(?:,[^,]+){2,}/同様に、少なくとも 2 つのコンマが含まれているものに対して適切にテストされます。ただし、コンマの間に何かがある場合に限ります。この(?:)構造により、キャプチャーせずにグループ化できます。この{2,}構文は、前のグループの 2 つ以上の一致を指定します。JavaScript では、次のようにテストできます。

/[^,]+(?:,[^,]+){2,}/.test("hello,world,whats,up,next"); // returns true

/[^,]+(?:,[^,]+){2,}/.test("hello,world"); // returns false
于 2012-04-04T08:33:33.230 に答える
0

これを試してください:

([a-zA-Z0-9]+)(,[a-zA-Z0-9]+){2,}
于 2012-04-04T08:41:03.617 に答える
0

パフォーマンスの観点からのいくつかの一般的な提案:

  1. [ ]|[ ] 句は使用しないでください。[A-Za-z0-9] など、いくつかの文字クラスを 1 つの [ ] 内に入れることができます。
  2. () を使いすぎないでください。通常、それぞれが追加のオーバーヘッドを必要とするキャプチャされた引数を格納します。いくつかのピースを一緒にグループ化する必要がある場合は、一致を格納しないグループ化演算子を探します ( (?: ... ) のようなものかもしれません)
于 2012-04-04T08:33:42.747 に答える
-1

これはあなたの問題を解決します、これを試してください

([a-zA-Z0-9],[a-zA-Z0-9],([a-zA-Z0-9]))

于 2012-04-04T08:57:50.367 に答える