2016-11-28 1 views
1

ではないすべての文字列をマッチングするためのJavaScriptの正規表現:私は次のような正規表現を持って、指定した文字列

var myRegex = /%([a-z_]*)%/i

これは、このような文字列は2重引用符の間にある%foo%として任意の部分文字列にマッチします。

%が何かを囲んでいるにもかかわらず、正規表現が一致したときにのみ一致するようにこの正規表現を変更する最良の方法は、fooの文字列ですか?だから%foo%と一致しませんが、一致するでしょう%bar_%%anythingelse%?あなたがここに否定先読みを探している

答えて

3

var myRegex = /%(?!foo%)([a-z_]*)%/i; 

(?!foo%)たちはfoo%が先%のように失敗し%foo%である場合、障害をアサートする否定先読みです。

+0

これは誤って '%foolkajsdksad% 'と一致しませんか? – Jay

+1

@Jayいいえ、 'foo%'は文字列リテラルなのでです。 'foo'の代わりに' foo'と '%'の間にワイルドカードがありません – Jecoms

+1

@Jay Nope、否定的な先読みが 'foo'の代わりに' foo% 'を探します。 – Gavin

関連する問題