2012-03-29 11 views
0

I、次のコードを有する:JS正規表現

searchSt = "テスト"、 = "における" を検索を。

var html = body.clone() 
    .children() 
    .remove() 
    .end() 
    .text(); 

alert(searchSt + "|" + searchEd); 
var patt = searchSt + "(.*)" + searchEd; 
var result = html.match(patt); 
alert(result[0]); //returns null 

私は言葉があると確信していますが、これはnullを返します: HTML:

Hello World 
Test Write SomeThing here is Words do it. hit in me 

間違っていますか?

答えて

1

ここ
テストあなたがjQueryのを使用している場合、コードは次のようになります。

<html> 
<head> 
<title>Test</title> 
<script src="http://code.jquery.com/jquery-latest.js"></script> 
<body> 
Hello World 
Test Write SomeThing here is Words do it. hit in me 
</body> 
</html> 
<script type="text/javascript"> 
    var searchSt = "Test", searchEd = " in"; 
    var html = $('body').clone().children().remove().end().text(); 

      alert(searchSt+"|"+searchEd); 
      var patt = searchSt+"(.*)"+searchEd; 
      var result = html.match(patt); 
      alert(result[0]);//returns null 

</script> 

そのスクリプトはbodyタグの下に置かれていることを確認します。 bodyタグよりも上の場合は見つかりません。そして、私は体を得る方法を変えました( '体')。

正規表現で問題ありません

+0

Nono、パーサーはそれを修正し、あなたのスクリプトが 'body'の外に(そして' html'の外でさえ)間違って配置されているという事実を穏やかに無視します。代わりに '$ .ready()'を使用してください。 – user123444555621

0

のRegExpコンストラクタの内部で文字列の正規表現(必要に応じて、文字をespacing)入れ:それはその正規表現の問題のように見えない

var re = new RegExp("\\d"); // => /\d/ 
0

:反転バーで

var re = new RegExp(searchSt + "(.*)" + searchEd); // => /Test(.*)in/ 

を。おそらく他の何か。 http://ideone.com/nNwz3

var html = "Hello World\ 
Test Write SomeThing here is Words do it. hit in me"; 

var searchSt = "Test", searchEd = " in"; 

var patt = searchSt+"(.*)"+searchEd; 
var result = html.match(patt); 

print ("'" + result[0] + "'"); 
print ("'" + result[1] + "'"); 

出力

'Test Write SomeThing here is Words do it. hit in' 
' Write SomeThing here is Words do it. hit' 
+0

in(searchEd)より前のスペースだと思います。 – funerr