------------- test.hta 파일 코드 ------------왜이 자바 스크립트 RegExp 구문은 무한 루프가 될 것입니까?
<!DOCTYPE html>
<html>
<head>
<title>dead</title>
</head>
<body>
txt<textarea id="content" >
<input name="" type="text" class="qu_te1n05ew" value="请输入您的E-mail地址" />
<input name="" type="submit" class="qu_sbt02" value="提 交" />
</textarea>
<button onclick="startCls();">start</button>
<script>
function getObj(id) {
return 'string' == typeof id ? document.getElementById(id) : id;
}
function startCls() {
var txt = getObj('content').value;
var srcRe = /<\w+(?:\s[^<>]*(?:(?:'[^']*')|(?:"[^"]*"))?[^<>]*)*\s+src\s*\=\s*["']?(?:[^"' <>]*\/)?([^\/"'<>]+\.(?:gif|jpg|png))['" ](?:\s[^<>]*(?:(?:'[^']*')|(?:"[^"]*"))?[^<>]*)*\/?>/ig;
alert(srcRe.exec(txt));
}
</script>
</body>
</html>
----------- -code end -------
srcRe.exec(txt)
왜 루프가 죽었는지? 다른 테스트 문자열이 작동합니다.
내 평균 >
을 종료하지 않는 HTML을 tagname.have하지 않기 때문에하는 img
태그 이름의 SRC를 얻을 수와 파일 이름을 얻기 위해 그것을 분할하지만, <b><img src="ss.gif" </b>
처럼, 아니 태그 이름의 SRC를하지 않는 인 srcRe
;
이 SYNAX (?:\s[^<>]*(?:(?:'[^']*')|(?:"[^"]*"))?[^<>]*)*
, 평균이 <
또는 >
이 경우, 그것은 ''
또는 ""
에 있어야하고, 다른 문자열은하지 <
또는 >
해야하며, >
에 의해 <
, 말 시작된다
이제 두 번 투표 할 의견이 있습니다. – gideon
['TEXTAREA'] (http://www.w3.org/TR/html4/interact/forms.html#edef-TEXTAREA)는 구문 분석 된 문자 데이터 만 허용하지만 다른 태그는 허용하지 않습니다. – Gumbo
죄송합니다. 그러나 정규 표현식을 사용하는 사람은 누구나 그 결과를받을 자격이 있습니다. 그것은 내가 몇 주 동안 본 코드 중 가장 이해하기 어려운 코드 라인입니다. 나는 당신이 훨씬 더 읽기 쉽고, 유지 보수가 가능하며, 당신이 가진 이슈를 가지지 않는 다른 방법 (실제 JS를 작성하여 그것을 쓰는 것)을 제안한다. – jfriend00