1

任意の数の文字列グループに一致する JavaScript 正規表現を作成しようとしています。たとえば、onetwothreethreetwooneまたはに一致する正規表現ですtwotwotwooneoneonethreeonetwo。上記の方法で、単語「1」、「2」、「3」の任意の組み合わせに一致する正規表現を作成することは可能ですか?

4

2 に答える 2

3

単に交互繰り返しを使用できます。文字列全体がこのパターンで構成されていることを保証するアンカーを使用することもできます。次に、Javascript の組み込みtest関数を使用してチェックを行うことができます。

if(/^(?:one|two|three)*$/.test(input))
    ...

少なくとも 1 つの用語が必要な場合 (空の文字列は許可されません)、+代わりに*次を使用します。

if(/^(?:one|two|three)+$/.test(input))
    ...

キャプチャ?:を抑制し、常に使用する必要があります (もちろん、明示的にキャプチャする必要がない限り)。これは優れた方法であり、より複雑なパターンでパフォーマンスを大幅に向上させることができます。

このパターンに適合する入力の部分文字列を見つけたい場合は、アンカー (^および$) を省略し、グローバル フラグgを使用matchして、代わりに文字列で使用します。

var matchArray = input.match(/(?:one|two|three)+/g);
于 2012-12-22T23:42:50.493 に答える
1
/(one|two|three)+/

グループは括弧内にあり、|その中は「または」を表し、+「1 つ以上」を意味します。

于 2012-12-22T23:41:38.890 に答える