求解,正则表达式的疑问

onepiece81 2008-07-17 04:03:20
var sToMatch = "abcde";
document.write(sToMatch.replace(/.+/gi,"*") + "<br>"); //输出:*
document.write(sToMatch.replace(/.*/gi,"*") + "<br>"); //输出:**

为什么第1次和第2次的结果会不一样??
...全文
98 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
renqiang_888 2008-07-17
  • 打赏
  • 举报
回复
下面的代码会输出如下:
我故意用汉字"匹配"换行了,其中下面五行都是空,请高手"潜水修行"说一下,下面五个"匹配"汉字的行匹配的是什么啊?
a匹配
匹配
匹配
匹配
匹配
匹配
**b*c*d*e*



JScript codefunction qq()
{
document.write(arguments[0] + "匹配<br>");
return "*";
}
document.write("abcde".replace(/a*/gi,qq) + " <br>"); //输出:**b*c*d*e*
  • 打赏
  • 举报
回复
[Quote=引用楼主 onepiece81 的帖子:]
var sToMatch = "abcde";
document.write(sToMatch.replace(/.+/gi,"*") + " <br>"); //输出:*
document.write(sToMatch.replace(/.*/gi,"*") + " <br>"); //输出:**

为什么第1次和第2次的结果会不一样??
[/Quote]

这个你只要理解了,+和*你就明白了
onepiece81 2008-07-17
  • 打赏
  • 举报
回复
来捧场了啊,呵呵
renqiang_888 2008-07-17
  • 打赏
  • 举报
回复
去掉当然能理解了,只匹配一次吗?输出*bcde
sxlfybb 2008-07-17
  • 打赏
  • 举报
回复
你有没有试着把匹配范围中的g去掉,再试试看效果?
renqiang_888 2008-07-17
  • 打赏
  • 举报
回复
onepiece81 你明白了,我还不明白,看我:http://topic.csdn.net/u/20080717/11/4e2c1401-f872-4459-848b-23a8c66d93c9.html?seed=1168906502
最后一楼发的贴子,谢谢
onepiece81 2008-07-17
  • 打赏
  • 举报
回复
1个是1次,1个是0次,我明白了,自己想复杂了,
钻到.包含0的陷阱里去了,晕,仍多谢大家。
xzjjy 2008-07-17
  • 打赏
  • 举报
回复
第一下是因为 贪婪,第二个/a*/是匹配 空字符串和"a",我理解的对吗?
cftea 2008-07-17
  • 打赏
  • 举报
回复
接近了,但不是的,再看个例子:
var sToMatch = "abcde"; 
document.write(sToMatch.replace(/.+/gi,"*") + " <br>"); //输出:*
document.write(sToMatch.replace(/a*/gi,"*") + " <br>"); //输出:**b*c*d*e*
onepiece81 2008-07-17
  • 打赏
  • 举报
回复
个人是这样理解的
/.+/gi把"0a0b0c0de0"匹配了,然后返回
/.*/gi是先什么都不匹配,然后再把"0a0b0c0de0"匹配了,所以替换了两个*出来
不知道这样对吗??
cftea 2008-07-17
  • 打赏
  • 举报
回复
不知道这样是否好理解一些:
var sToMatch = ""; 
document.write(sToMatch.replace(/.+/gi,"*") + " <br>"); //输出:
document.write(sToMatch.replace(/.*/gi,"*") + " <br>"); //输出:*

87,915

社区成员

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

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