• 蛙蛙请教:js里的match方法和exec方法的区别,关于正则表达式的


    蛙蛙请教:js里的match方法和exec方法的区别,有些晕,大家给解释一下原理

    先来看第一段代码,这段代码用的是String对象的Match方法,能够弹出3个链接,说明正常匹配,但是里面的((.|\n)*?)和(.*?)我不知道有什么区别.
    <div id="div1">
    <a href="qy.php?id=129"><font color="#000000">北京丰收葡萄酒有限公司 </font></a>
    <a href="qy.php?id=130"><font color="#000000">中国长城葡萄酒有限公司、华夏葡萄酿酒有限公司 </font></a>
    <a href="qy.php?id=132"><font color="#000000">中法合营王朝葡萄酿酒有限公司 </font></a>
    </div>
    <br>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    var str = div1.innerHTML;
    var re  = new RegExp("<a[^<>]+?\>((.|\n)*?)<\/a>", "gi");
    var a = str.match(re);
    for(var i=0;i<a.length;i++)
    {
     alert(a[i]);
    }
    //-->
    </SCRIPT>

    再来看第二段儿程序,这里只弹出了两个对话框,而且最后一个弹出的是括号里匹配的内容.
    <div id="div1">
    <a href="qy.php?id=129"><font color="#000000">北京丰收葡萄酒有限公司 </font></a>
    <a href="qy.php?id=130"><font color="#000000">中国长城葡萄酒有限公司、华夏葡萄酿酒有限公司 </font></a>
    <a href="qy.php?id=132"><font color="#000000">中法合营王朝葡萄酿酒有限公司 </font></a>
    </div>
    <br>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    var str = div1.innerHTML;
    var re = /<a[^<>]+>(.*?)<\/a>/gi;
    var a = re.exec(str)
    for(var i=0;i<a.length;i++)
    {
     alert(a[i]);
    }
    //-->
    </SCRIPT>
    这让小弟是很是纳闷儿,我想获取里面的129,130,132这些内容,还有那些链接的显示文本,就是那些汉字,弄的我好头大,真是的,后来经过"梦在流浪"的指点,写出了一下算法,总算是懂了一点正则表达式匹配的原理了,以前看过《javascript宝典》里讲的正则表达式匹配顺序和规律,都忘了。
    <div id="div1">
    <a href="qy.php?id=129"><font color="#000000">北京丰收葡萄酒有限公司 </font></a>
    <a href="qy.php?id=130"><font color="#000000">中国长城葡萄酒有限公司、华夏葡萄酿酒有限公司 </font></a>
    <a href="qy.php?id=132"><font color="#000000">中法合营王朝葡萄酿酒有限公司 </font></a>
    </div>
    <br>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    var str = div1.innerHTML;
    //alert(str);//这里你可以看到color="#000000"已经变成了color=#000000,没有了引号,所以再写表达式的时候要注意了.
    var re  = new RegExp("<a[^<>]+?\>((.|\n)*?)<\/a>", "gi");
    var a = str.match(re); //第一次搜索
    for(var i=0;i<a.length;i++)
    {
     var temp;
     //alert("第一次搜索的完整匹配,包括括号里面的匹配部分\n"+a[i]); 
     temp = a[i].match(/qy.php\?id=(\d+)/ig); //第二次搜索
     //alert("第二次搜索的完整匹配,也就是href的引号中间的部分\n"+temp[0]);
     alert("第二次搜索的匹配结果的括号中的部分,也就是链接的数字参数\n"+RegExp.$1);
     temp = a[i].match(/<font[^<>]+?color=#000000\>(.*?)<\/font>/ig);
     alert("第三次搜索的匹配结果的括号中部分,也就是链接的文本部分\n"+RegExp.$1);
    }
    //-->
    </SCRIPT>
    顺便贴一下“梦在流浪给我的函数”
    <SCRIPT LANGUAGE="JavaScript">
    var str1 = div1.innerHTML;
    var re = /<a[^<>]+>([^a]*?)<\/a>/gi;
    var a = re.exec(str1);
    var b=re.exec(str1);
    var c=re.exec(str1);
     alert(a[1]);
     alert(b[1]);
     alert(c[1]);
    </SCRIPT> 

  • 相关阅读:
    ROC曲线
    数学建模的时间表和分工
    找寻子串
    被7整除
    Java中BufferedReader和scanner的对比
    机器学习降维方法
    梯度下降法
    天池大赛
    统一认证系统(三)
    软件设计方案
  • 原文地址:https://www.cnblogs.com/onlytiancai/p/193386.html
Copyright © 2020-2023  润新知