javascript正则表达式匹配两个字符串之间的字符

时间:2009-09-09 16:07:46

标签: javascript regex match

我是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进行匹配!

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

尝试:

/Combined_Make =([^<]+)/

然后您将要访问第一个捕获组( [1] ):

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

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

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

答案 1 :(得分:0)

String.match()总是返回一个数组,即使只有一个匹配项(除非没有匹配项,然后返回NULL

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

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

"hello".match( /he(ll)(o)/ );
// yields ["hello", "ll", "o"]