2016-08-01 10 views
2

"front"という単語を含む文字列と一致する正規表現パターンをまとめようとしていますが、 "square"という単語は含まれていません。私はこれを個別に達成することができますが、それらをまとめるのに問題があります。javascript regex:文字列にはこれが含まれていますが、それはありません

フロント= YES

^((?=front).)*$ 

平方= NO

^((?!square).)*$ 

はしかし、どのように私はこれらのような単一の正規表現式に結合するには?

+2

の答えは正しいですが、なぜ正規表現を使うのか? '(text.indexOf( 'front')> = 0)&&(text.indexOf( 'square')=== -1)'なぜでしょうか? – smarx

+1

またはES6 'text.includes(" front ")&&!text.includes(" square ")'(ただし、まだ完全にはサポートされていません) – Arnauld

答えて

2

あなたは、このためだけの単一の負の先読みを使用することができます

/^(?!.*square).*front/ 
  • (?!.*square)squareが存在する場合、どこにでも入力
  • ^.*frontでどこでも入力
  • frontと一致します失敗したことを主張するために否定先読みであります
+0

ありがとうございます!どんな順番でも、両方を含んでいるかどうかをテストしたいのですが? –

+0

[このデモを見る](https://regex101.com/r/fY0yW6/1) – anubhava

+0

'もしそれらが両方とも任意の順序で含まれていれば、' '/^(?=.* square)(? =。* front)/ '** – anubhava

0

ルックアヘッドアサーションを使用して論理を表現することができます。

最終パターンは、次のようになります。ここ

^(?=.*?front)(?!.*square) 
関連する問題