2009-04-21 5 views
1

Ajax를 통해 검색하는 페이지의 소스를 검색하고 필드 세트 태그를 포함하여 모든 데이터를 가져 오는 정규식이 있습니다.null을 반환하는 Javascript 정규식이지만 그렇지 않아야합니다. 왜?

var req = new XMLHttpRequest(); 
var regex = new RegExp("<(fieldset)\b[^>]*>.*?</\1>"); 

function showEditForm(i) { 

    req.open('GET', '/admin/maps/edit/' + i, false); 
    req.send(null); 

    var response = req.responseText; 
    //strip out all the line breaks 
    var responseStripped = response.replace(new RegExp("\\n|\\r", "g"), ""); 

    var regexed = regex.exec(responseStripped) 
    alert(regexed); 

} 

여기 responseStripped의 소스입니다 : 내가 RegexBuddy 및 RegexPal에서 정규식 작품 것을 확인했습니다

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head> <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> <title>Gessner Engineering | Administrative Area | edit</title> <link href="/stylesheets/scaffold.css?1236625014" media="screen" rel="stylesheet" type="text/css" /> </head><body> <div id="user-bar-greeting">Logged in as Thomas Gessner</div> <div id="user-bar-action" >(<a href="/logout" title="Log out">Log out</a>)</div><div id="header"></div><ul id="menu"> <li><a href="/admin">Home</a></li> <li><a href="/admin/maps">Geotechnical Map</a></li> <li><a href="/admin/profiles">Profiles</a></li> <li><a href="/admin/projects">Projects</a></li> <li><a href="/admin/users">Users</a></li></div><div id="content"> <h1></h1> <fieldset><legend>Edit Test Marker</legend><form action="/admin/maps/1" class="edit_map" enctype="multipart/form-data" id="edit_map_1" method="post"><div style="margin:0;padding:0"><input name="authenticity_token" type="hidden" value="1422cd87ff4d68b2b23c9015a0568bffd47fbfeb" /></div> <p> <label for="map_name">Name</label><br /> <input id="map_name" name="map[name]" size="30" type="text" value="Test Marker" /> </p> <p> <label for="map_description">Description</label><br /> <textarea cols="40" id="map_description" name="map[description]" rows="5">test</textarea> </p> <p> <label for="category_id">Category:</label><br/> <select id="map_category_id" name="map[category_id]"><option value="">Select One</option></select> </p> <p> <label for="map_address">Address</label><br /> <input id="map_address" name="map[address]" size="30" type="text" /> </p> <p> <label for="map_address2">Address2</label><br /> <input id="map_address2" name="map[address2]" size="30" type="text" /> </p> <p> <label for="map_city">City</label><br /> <input id="map_city" name="map[city]" size="30" type="text" /> </p> <p> <label for="map_state">State</label><br /> <input id="map_state" name="map[state]" size="2" type="text" /> </p> <p> <label for="map_zip">Zip</label><br /> <input id="map_zip" name="map[zip]" size="30" type="text" /> </p> <p> <input id="map_submit" name="commit" type="submit" value="Create" /> </p></form></fieldset></div></body></html> 

여기 내 자바 스크립트입니다.

그러나 모두 완료되고 완료되면 null이 반환됩니다.

내가 뭘 잘못하고 있니?

감사합니다.

이 있습니다 테스트 형태로, 그것은 추한 보일 수 있지만 단계적으로 그것을 무너 뜨리는 시도하고 이것은이었다 마지막 상태입니다.

답변

7

을 당신은에 백 슬래시 탈출을 잊어 버린 문자열 :

var regex = new RegExp("<(fieldset)\\b[^>]*>.*?</\1>"); 
+1

고마워요. Guffa. 나는 다른 것을 도망쳐 야했다.이 작업은 다음과 같다. var regex = new RegExp ("<(b)> *. *?"); 간단하고 직관적 인 대답으로이 질문을 삭제해야합니까? –

+0

@Zach 아니요, 질문을 삭제하지 마십시오. 누군가 다른 사람이 비슷한 문제를 겪을 가능성이 있습니다 :-) –

+0

비슷한 문제에 대해 머리카락을 꺼낼 준비가되었지만이를 발견했습니다. 나는 이것이 삭제되지 않았기 때문에 매우 감사합니다! – DanM7

관련 문제