2011-01-19 33 views
4

置き換え、そのよう<head></head>タグの間に何を交換しようとしている:複数行の文字列のJavascriptの正規表現文字列置換

<body> 
    Multi line bar 
</body> 

<head> 
    Multiline foo 
</head> 
<body> 
    Multi line bar 
</body> 

はに置き換えられます非常に基本的な:<head(.*)\/head>/mが動作しません。文字列から改行を削除するとうまく動作します。どんな種類の改行があっても、魔法は何ですか?

+0

を見ますhttp://blog.stevenlevithan.com/archives/singleline-multiline-confusing – endolith

答えて

8

問題は、ドットメタキャラクタが改行に一致しないことです。ほとんどの正規表現のフレーバーでは、 "DOTALL"または "single-line"モードを設定することによって、すべてのものにマッチさせることができますが、JavaScriptではサポートしていません。代わりに、と一致するものでドットを置き換える必要があります。最も一般的なイディオムは[\s\S]です(「すべての空白文字またはでない文字は空白です」)。

+1

あなたは '[\ d \ D]'と '[\ w \ W]'も持っています! :D – Thai

4

アランは、要約すると、/<head([\s\S]*)\/head>/を使用し、あなたが望むことを行う必要があります。

私は仕事のために使用したい、実際の正規表現は/<head>([\s\S]*?)<\/head>/ですが、それだけでは存在してはならない第二headタグとは貪欲マッチングが存在しない保証ので、違いはおそらく、問題ではないでしょう:)

関連する問題