をお試しください:
(?s)^.*Content.*$
(?s)
は、Singleline
モードを有効にします。.
メタ文字は、、改行を含むすべての文字と一致します。あなたはそれが同様にクライアント上で実行したい場合は、これを使用する:JavaScriptをもDOT_ALL
、DOTALL
、ドットマッチ-すべて、シングルとして知られているSingleline
モード(には相当していないためだ
^[\s\S]*Content[\s\S]*$
ライン、または/s
モード)。 (?s)
や(?i)
のようなインライン修飾子は認識されません。
は、数量詞と式(*
、+
など)自体が数量詞によって制御されている基で囲まれ(.\s*)*
、同様に構築するために注意してください。正規表現がすぐに一致することに失敗した場合、それは戻って別のパス(正規表現の異なる部分を使用して文字列の異なる部分に一致させる)で一致するように試みますが、これは非常に高価でパフォーマンスが悪くなります。 .
と\s
が同じ文字の多くにマッチすることができるので、この正規表現は特に悪いことです。これは、あきらめる前に探索しなければならないパスの数を劇的に増やします。
この現象は一般にcatastrophic backtrackingとして知られており、通常、一致する可能性がない場合に現れます。シーケンスContent
が存在するとき、あなたのバリデーターがうまく動作することを期待します。 MalContent
とContentious
のような言葉で偽陽性を防ぐことができます
(?s)^.*\bContent\b.*$
:あなたが唯一の完全な単語Content
に一致させたい場合はところで
は、あなたがそうのように、単語の境界を追加する必要があります。 \b
は、さまざまな正規表現の味で動作が異なります。 .NETでは、ECMAScript
モードを指定しない限り、Unicode対応です。JavaScriptでは、ASCIIの文字と数字だけを単語文字として認識するはずです。それはほとんどのブラウザではありますが、それは当然のことです。
恐ろしい答えです。クライアント側でも実行したいので([runt = "server"はサーバーがタグを解釈する必要があることを意味し、EnableClientScript = "false"はサーバー上でのみ実行する)ので、[\ s \ S] 。 – Eric