RegexBuddy 得出两个正则结果是一样的,实际..

mzytechsupport 2011-01-27 11:47:01
RegexBuddy 得出两个正则结果是一样的,实际不一样。


var data = '<ul id="ulBasket"><li id="bt2798"><img onclick="btChooseOne(this);" src="http://img1.static-freemerce.com/PSupplier/10/2750/0.jpg">美国眼科推荐Similasan白内障眼药水10毫升帮助老年性白内障 <a href="#@" onclick="btClearOne(this);">[X]</a></li><li id="bt2799"><img onclick="btChooseOne(this);" src="http://img1.static-freemerce.com/PSupplier/10/2751/0.jpg">【赠品】加厚透明便携六格双层药盒 <a href="#@" onclick="btClearOne(this);">[X]</a></li><li id="bt2801"><img onclick="btChooseOne(this);" src="http://img1.static-freemerce.com/PSupplier/10/2753/0.jpg">有小票*皇冠信誉解酒保肝风靡美国公务员必备RU-21安体普解酒片 <a href="#@" onclick="btClearOne(this);">[X]</a></li></ul>';
var reCat = /<li\s.*bt(\d+)\".*src=\"(.*)\">\s*(.*)\s*<a.*<\/li>/igm;
var pattern = /bt(\d+)\"><[^\"]+\"[^\"]+\"[^\"]+\"([^\"]+?)\">([^<]+?)<a[^>]+?>[^<]+?<\/a><\/li>/igm;
var mts;
//alert(pattern.test(data));
//alert(reCat.test(data));
while (mts = reCat.exec(data)) {
if (mts != null) {
alert(mts[1]);
// alert(mts[2]);
// alert(mts[3]);
}
}

mts = reCat.exec(data) 的结果和 mts = pattern.exec(data) 实际运行结果是不一样的。RegexBuddy给的验证是Match都有3组,group都有3个

问题:两个正则运行结果不一样的原因是啥
...全文
99 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wern0565 2011-01-28
  • 打赏
  • 举报
回复
var reCat = /<li\s.*bt(\d+)\".*src=\"(.*)\">\s*(.*)\s*<a.*<\/li>/igm;

我的理解是,红色的部分,使得你一次匹配的结果是整个ul里的值。
王集鹄 2011-01-28
  • 打赏
  • 举报
回复
RegexBuddy本来就不一样,楼主眼花了?

第一个只有一组结果,第二个才是三组结果。
mzytechsupport 2011-01-28
  • 打赏
  • 举报
回复

可以看到有Match1 Match2 Match3
它们各自底下又有group1 group2 group3

我用c#又写了个MatchCollection 循环去group value值,的确正则是错误的,只能取一组,错在哪里啊那个正则。为啥用RegexBuddy 出现如上图信息。我以为正则是正确的

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧