javascript正则表达式匹配两个字符串之间的字符
-
05-07-2019 - |
题
我是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"]
不隶属于 StackOverflow