【问题标题】:javascript regex to match characters between two stringsjavascript正则表达式匹配两个字符串之间的字符
【发布时间】:2009-09-09 16:07:45
【问题描述】:

我对正则表达式完全陌生,我正在尝试使用它来匹配 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$ 都使用不同的起始符来进行比赛!

提前感谢您的帮助!

【问题讨论】:

    标签: javascript regex match


    【解决方案1】:

    试试:

    /Combined_Make =([^<]+)/
    

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      这里有一个明确的方式来证明这一点

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-26
        • 1970-01-01
        • 1970-01-01
        • 2011-08-31
        • 1970-01-01
        相关资源
        最近更新 更多