2010-12-08 5 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 pageにそのパターンの前後の文字が含まれているときに、そのパターンと正確に一致させようとしているからだと思います。 。*を最初と最後に入れてみてください。新しい行にまたがって一致を指定する必要があるかもしれません。 –

+1

'.'は正規表現の中の「任意の文字」を意味することに注意してください。したがって、リテラルドットにもマッチしますが、正規表現で実際のドットをマッチさせたい場合は、より具体的で '\ .'と書かなければなりません。 –

+0

私は二重引用符と一重引用符について間違いでした。みんなありがとう。 –

答えて

4

二重引用符の代わりに一重引用符を使用しました。これにパターンを変更し、それが動作します:

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

また、ティムPietzckerは彼のコメントで指摘したようにドットの世話をするようにしてください!

+0

oh。じぶんの。神。どのような愚かな間違い。ありがとうヤコブ。 –

関連する問題