JavaScript Regex는 두 줄 사이의 문자를 일치시킵니다
-
05-07-2019 - |
문제
나는 전적으로 Regex를 처음 접했으며 변수에 매핑하기 위해 Vales와 일치하는 데 사용하려고 노력하고 있습니다 (PHP 스크립트에서 생성 된 Responcetext의 출력을보고있는 JavaScript).
현재이 코드가 있습니다.
if (xmlhttp.readyState==4)
{
document.getElementById("test").innerHTML=xmlhttp.responseText;
cmake = xmlhttp.responseText.match(/Combined_Make =(.*?)</);
}
다음은 다음과 같은 출력의 (부분)입니다.
echo "<span class=\"note\">";
echo "Test Output\n";
echo " Combined_Make = $model\n";
echo " Combined_Model = $marque\n";
모든 것이 실행되면 실제로 다음과 같은 선을보고 있습니다.
Combined_Make = GRAND JEEP CHEROKEE<br />
현재 나는 정확하게 돌아오고있다 :
'combined_make = 그랜드 지프 체로키>, 그랜드 지프 체로키'
물론 나는이 사례에서 단지 '그랜드 지프 체로키 (Grand Jeep Cherokee)'를 쫓고있다 :) - 왜 내가 그 정확한 출력을 되 찾는 지 잘 모르겠다!
매치에 대해 다른 시작 찌르기를 사용하여 여러 var $를 할당해야합니다.
도움을 주셔서 감사합니다!
해결책
노력하다:
/Combined_Make =([^<]+)/
그런 다음 첫 번째 캡처 그룹에 액세스하고 싶을 것입니다 ([1]
):
cmake = xmlhttp.responseText.match(/Combined_Make =([^<]+)/)[1];
그러나 첫 번째 캡처 그룹에 액세스하기 전에 일치하는 것을 테스트 할 수 있습니다.
var match = xmlhttp.responseText.match(/Combined_Make =([^<]+)/);
cmake = match && match[1];
다른 팁
String.match()
단일 일치 만있는 경우에도 항상 배열을 반환합니다 (경기가 없을 때 제외하면 반환됩니다. NULL
)
캡처 된 하위 그룹을 포함하는 패턴의 경우 String.match()
항상 인덱스 0에서 전체 패턴 일치를 반환 한 다음 INDEX 1 ~에서 후속 일치 그룹을 반환합니다. N.
여기를 보여주는 명확한 방법이 있습니다
"hello".match( /he(ll)(o)/ );
// yields ["hello", "ll", "o"]
제휴하지 않습니다 StackOverflow