我是regex的新手,我正在尝试使用它来匹配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&gt;,GRAND JEEP CHEROKEE'

当然我在这个例子中只是'GRAND JEEP CHEROKEE':) - 我也不确定为什么我要回到那个精确的输出!

请注意,我需要指定多个var $,每个使用不同的开始sting进行匹配!

提前感谢您的帮助!

有帮助吗?

解决方案

尝试:

/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处的整个模式匹配,然后返回索引1到 N <的后续匹配组/ em>的

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

"hello".match( /he(ll)(o)/ );
// yields ["hello", "ll", "o"]
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top