通过正则查找字符串

hztgcl1986 2011-11-27 08:17:11

var text = "bat,cat,sat,fat";
var p = /.at/igm;
var m = p.exec(text);

window.alert(m); //这里结果是bat,只包括一个值,如何得到bat cat sat fat这四个值?
...全文
156 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
hztgcl1986 2011-11-28
  • 打赏
  • 举报
回复
为什么var m = p.exec(text);不能返回所有匹配(bat cat sat fat),而只返回了第一个匹配(bat)呢?

如何才能使exec方法与text.match(p)达到相同的效果?
licip 2011-11-28
  • 打赏
  • 举报
回复
text.match
是这个方法
xiaoyin0228 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 legend1988 的回复:]

JScript code

var text = "bat,cat,sat,fat";
var p = /.at/ig;
while(p.lastIndex<text.length)
{
var m = p.exec(text);
alert(m);
}
[/Quote]

+1
峭沙 2011-11-28
  • 打赏
  • 举报
回复
var text = "bat,cat,sat,fat";
var p = /.at/igm;
var m = text.match(p);
alert(m);
var text = "bat,cat,sat,fat";
var p = /.at/igm;
var m;
while((m = p.exec(text)) !== null){
alert(m);
}
Legend1988 2011-11-28
  • 打赏
  • 举报
回复

var text = "bat,cat,sat,fat";
var p = /.at/ig;
while(p.lastIndex<text.length)
{
var m = p.exec(text);
alert(m);
}
峭沙 2011-11-28
  • 打赏
  • 举报
回复
8楼写法不严格
		var text = "bat,cat,sat,fat",
p = /.(a)t/igm,
result = [],
m;
while((m = p.exec(text)) !== null){
result.push(m[0]);
}
alert(result);
这个能达到和match一样的效果,但是如果是这么简单的正则,没必要用exec,因为你根本没用到exec比match多出的功能。。
峭沙 2011-11-28
  • 打赏
  • 举报
回复
答案在8楼的第二个方法,至于原因呢,我只能告诉你人家API本身就是这样设计的。。自己看API看清楚点吧,建议看英文API[Quote=引用 11 楼 hztgcl1986 的回复:]

为什么var m = p.exec(text);不能返回所有匹配(bat cat sat fat),而只返回了第一个匹配(bat)呢?

如何才能使exec方法与text.match(p)达到相同的效果?
[/Quote]
诺维斯基 2011-11-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hookee 的回复:]
JScript code


var text = "bat,cat,sat,fat";
var p = /.at/igm;
var m = text.match(p);
alert(m);
[/Quote]

+1


其实你用split(',')
就不错!!
p2227 2011-11-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ifandui 的回复:]

引用 3 楼 p2227 的回复:
原来数组是可以直接alert的。。。。
alert也是调的toString() 回想一下object
[/Quote]但是alert一个object会显示[object Object],所以我以为数组也要一个个分解。。。
默默不得鱼 2011-11-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 p2227 的回复:]
原来数组是可以直接alert的。。。。
[/Quote]alert也是调的toString() 回想一下object
p2227 2011-11-27
  • 打赏
  • 举报
回复
原来数组是可以直接alert的。。。。
p2227 2011-11-27
  • 打赏
  • 举报
回复
<script>
var text = "bat,cat,sat,fat";
var p = /.at/igm;
var m = text.match(p);
//var m = p.exec(text);

for (i=0;i<m.length ;i++ )
{
window.alert(m[i])
}
;</script>
hookee 2011-11-27
  • 打赏
  • 举报
回复

var text = "bat,cat,sat,fat";
var p = /.at/igm;
var m = text.match(p);
alert(m);

87,909

社区成员

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

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