문제

나는 전적으로 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"]
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top