2010-12-08 50 views
0

我目前在我的腳本中有這個,我不確定它爲什麼不起作用。它在一個正則表達式測試器上工作,它是一個非常簡單的正則表達式。 爲什麼不是這個正則表達式在JavaScript中工作?

var page = '<div id="loginOverlay" class="loginOverlay">' + 
'<div id="loginForm">' + 
     '<form name="loginForm" method="post" action="/test.jspx" onsubmit="grayLoginAnonymous();return false;" style="margin:0px;" autocomplete="off"><input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="21a9e5a4197cfaefec409d8473f29a6e" />'+  
    ' </form>'+ 
    ' </div> '+ 
' </div>'; 

var pattern = /<input type='hidden' name='org.apache.struts.taglib.html.TOKEN' value='((\d|\w)+)' \/>/; 
var match = page.match(pattern); 
document.write(match); 
console.log(page); 
console.log(match); 

</script> 

匹配返回'null'。 有人可以指出這個問題嗎?

+1

我認爲這是因爲你正試圖完全匹配該模式,當var頁面包含字符之前和之後的模式。嘗試在開始和結束時放置一個*。您可能還需要指定跨越新行的匹配。 – 2010-12-08 10:35:45

+1

請注意`.`表示正則表達式中的「任何字符」。因此,雖然它也會匹配一個字面點,但如果您希望正則表達式匹配一個實際的點,則應該更具體一些,並寫入`\ .`。 – 2010-12-08 10:35:46

回答

4

您使用單引號而不是雙引號。改變模式,這將工作:

var pattern = /<input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="((\d|\w)+)" \/>/; 

此外,請務必照顧蒂姆Pietzcker在他的評論中指出的點!

相關問題