0

我对正则表达式完全陌生,并且正在尝试使用它来匹配 vales 以便将它们映射到变量(javascript 查看从 php 脚本生成的 responceText 中的输出)。

目前我有这个代码:

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$,每个 var$ 都使用不同的 start sting 进行比赛!

提前感谢您的帮助!

4

2 回答 2

1

尝试:

/Combined_Make =([^<]+)/

然后你会想要访问第一个捕获组 ( [1]):

cmake = xmlhttp.responseText.match(/Combined_Make =([^<]+)/)[1];

您可能希望在尝试访问第一个捕获组之前测试它是否匹配:

var match = xmlhttp.responseText.match(/Combined_Make =([^<]+)/);
cmake = match && match[1];
于 2009-09-09T16:14:27.863 回答
0

String.match()始终返回一个数组,即使只有一个匹配项(除非没有匹配项,则返回NULL

对于包含捕获子组的模式,String.match()将始终返回索引 0 处的整个模式匹配,然后返回索引 1 到N处的后续匹配组。

这是一个明确的方式来证明

"hello".match( /he(ll)(o)/ );
// yields ["hello", "ll", "o"]
于 2009-09-09T16:22:24.410 回答