2016-07-27 9 views
0

文字列に<または{が含まれている場合に一致するJS正規表現パターンを作成したいと思いますが、パターンにorタイプの条件を使用する方法がわかりません。私は?はあなたに0または文字の1を与えることを知っているが、私は1 <のか少なくとも1つの "<"または1つの "{"が含まれている場合、JS内に文字列と一致する正規表現パターンを作成するにはどうすればよいですか?

+0

有効な結果と無効な結果の入力文字列を表示 – RomanPerekhrest

+0

あなたはどの言語で作業していますか?あなたが使いたいコンセプトは "regex union"ですが、実装は言語に依存しているので、わからなくても正確な答えを出すことはできません。 – Kadima

+0

私は使っている言語がjavascriptで、 'pattern =/[<{] /;のようなものを試しました。 var str = " akantoword

答えて

2

{の少なくともあなたは正規表現がいずれかにマッチするかのリストを生成するために、角括弧([])を使用することができますしたいです文字のうち。したがって、<又は{使用と一致する:

[<{] 

例えば(太字で一致部):

[<{].*[>}]

<にこれが一致する>

{だからthis}

又は

[<{]

<のみ第1ブラケットマッチ>

{のみ最初ブレースが一致}


:使用する言語と関数も必須です。機能がどのように機能しているかを知っているので、何を期待するかを知っていることを確認してください。

Hereは、参考にできるRegexp.matchのMDNのドキュメントへのリンクです。他の機能や情報については、「参照」リンクも参照してください。 - 試合<または{のいずれか

var re = /([<]|[{])/; 

console.log(re.test("test{one<}")); // true 
console.log(re.test("test{"));  // true 
console.log(re.test("test-->"));  // false 

([<]|[{])RegExp.test機能を使用して

+0

1つの文字がある限り一致しますか? '? 'がなくてもデフォルトの振る舞いですか? – akantoword

+1

@akantowordこれは*正確に* 1文字にマッチします。どちらか一方が存在しない場合、(より大きなパターンの一部として)一致しません。 '?'は文字がなくても一致するようにします。 – rtmh

0

シンプルなソリューション。

+0

文字クラスよりもパフォーマンスが悪いため、交替はお勧めできません。 '[<{]'ははるかに効率的です。 Btwでは、 '<| {'を使ってリテラルを使いたいのであれば、 '<'と '{'の文字クラスを使う必要はありません。 –

+0

@FedericoPiazza、それはOPの*パターンの状態のORタイプのデモンストレーションでした。 – RomanPerekhrest

+0

答えが間違っていると言っているわけではなく、実際には良いです。私は、OPが交互に進んでいきたいと思った場合の使用法の詳細を追加するとコメントしました。 Btw、 '<| {'で文字をエスケープするために文字クラスを使う必要はありません。 –