2017-03-20 4 views
1

部分文字列 "abc"を含む文字列と一致する正規表現が必要ですが、部分文字列 "abcdef"や "abcghi"は含まれません。Javascript - Regexes and lazyness

xxxabcxabcdefxx 

私の正規表現は、「ABCX」文字列の幻影に惑わされ、魔女は「ABCが含まれています。しかし、このwronlgyは、以下の文字列にマッチする

/^.*abc(?!def|ghi).*$/i 

:私は見つけることができる最善の解決策は、このました"それは禁止された接尾辞が続かない。 私は "+"と "?"を使ってみました。修飾子は役に立たない。

私はワイルドカードのない正規表現を使用し、マッチした文字列と完全な文字列を比較することでこの問題を回避できると思いますが、その解決策が見つかったようです。

.*(abcdef|abcghi).* 

、それらを除外:

+3

文字列全体に先読みを適用します。 '/^(?!.* abc(?:def | ghi))。* abc。* $ /' –

+0

これは正しく機能しているようです。ありがとうございます。 –

答えて

0

なぜABCDEF文字列とabcghiを含まない文字列を検索しませんか?

0

var a = 'xxxabcxabcdefxx'; 
 
if (/abc(?:def|ghi)/g.test(a)) 
 
\t console.log(/^.*(abc(?:def|ghi)).*/g.exec(a))