2012-03-29 41 views
0

我有以下代碼: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標籤下面。如果它高於身體標籤無法找到。而且我改變了如何獲得身體$('身體')的方式。

正則表達式沒有問題

+0

Nono,解析器將解決這個問題,並且輕輕地忽略腳本放在'body'之外的事實(甚至在'html'之外)。改爲使用'$ .ready()'。 – user123444555621 2012-03-29 21:20:03

0

將一個字符串的正則表達式的正則表達式構造函數中(espacing的人物,如果需要的話):

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

倒置條:

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

它看起來並不像它的正則表達式的問題。可能是別的東西。
測試這裏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 2012-03-29 21:11:21