正规表达式问题

gdjxlhc 2003-12-05 04:50:49
var reg1=/a+?/;
alert("aabaabaab".replace(reg1,"@")); //得出@abaabaab
但为什么改为
var reg1=/a+?b/;
alert("aabaabaab".replace(reg1,"@")); //得出@aabaab,而不是a@aabaab

请问改后为什么得出这样的结果。
另外,我不太明白正则表达式匹配的步骤,请各信说细点的讲解一下。谢谢
...全文
37 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
gdjxlhc 2003-12-08
  • 打赏
  • 举报
回复
经过各位的提示,我也找了不少资料,终于理解啦。谢谢各位。
wanghr100 2003-12-07
  • 打赏
  • 举报
回复
Windows脚本技术->JScript->用户指南->正则表达式介绍
http://vip.5d.cn/friday/upload/SCRIPT56.chm
gdjxlhc 2003-12-06
  • 打赏
  • 举报
回复
谢谢各位。。。
请问那里有比较详细的关于正则比达式的教程。
提供网站或发一份给我,不用感激....
gdjxlhc@163.com
cloudchen 2003-12-05
  • 打赏
  • 举报
回复
非贪婪匹配并不代表仅匹配0-1次,如果是这样的话不是重复了。
这里规定如果要匹配成果就必须有个b,这样才能找到匹配
bzscs 2003-12-05
  • 打赏
  • 举报
回复
/a+?b/ 这里已经规定了必须要紧接“a+?”匹配一个“b”呀,请琢磨一下“紧接”这个词的含义
gdjxlhc 2003-12-05
  • 打赏
  • 举报
回复
to:xuzuning(唠叨)
先谢谢。
/a+?/ 非贪婪匹配,只要匹配到一个a就停止了
/a+?b/ 同样是非贪婪匹配,但要匹配到b才停止,此时已经是aab了

但到a+?时就已经非贪婪重复匹配啦,此时应该变成/ab/吧。
请讲解一下好吗???
patchclass 2003-12-05
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2531/2531996.xml?temp=.2189447
简单问题,大家帮忙啊 ,虽然分少了点啊
cloudchen 2003-12-05
  • 打赏
  • 举报
回复
一样,从左到右,也有优先级,具体看手册
gdjxlhc 2003-12-05
  • 打赏
  • 举报
回复
up
gdjxlhc 2003-12-05
  • 打赏
  • 举报
回复
谢谢大家。。。
如果按 xuzuning(唠叨)的解释也行,不过这样的话那正则表达式的匹配步骤是怎样的,
是不是按左到右来(跟四则运算相象)。
能讲解一下吗???
gdjxlhc 2003-12-05
  • 打赏
  • 举报
回复
to:cloudchen(陈系上.net)
先谢谢你。我是这样理解的,请指教。
var reg1=/a+?b/;
?的作用是尽可能少匹配,所以a+是匹配一个或多个a,但紧接后面的尽可能少匹配使他只匹配一个a,即
alert("aabaabaab".replace(reg1,"@"));
应该得出a@aabaab,但调试时出现的结果却不是,请问问题出在那里?

cloudchen 2003-12-05
  • 打赏
  • 举报
回复
还是xuzuning说的清楚,我的意思和他一样
xuzuning 2003-12-05
  • 打赏
  • 举报
回复
/a+?/ 非贪婪匹配,只要匹配到一个a就停止了
/a+?b/ 同样是非贪婪匹配,但要匹配到b才停止,此时已经是aab了
purexu 2003-12-05
  • 打赏
  • 举报
回复
对,是一个以上,说错了
:_)
gdjxlhc 2003-12-05
  • 打赏
  • 举报
回复
to:xzq686(瞬)
谢谢你,不过现在我不是想得得怎样的值,只是不明白为什么得出这样的结果。能讲解一下吗???
cloudchen 2003-12-05
  • 打赏
  • 举报
回复
尽管第二个也是尽可能少的匹配,但是有区别的是不管前面尽可能匹配多少,但是为了符合匹配,也就是还有个b,所以肯定会把前面的多个a一起匹配进去的。
这里?并不是匹配0/1次
xzq686 2003-12-05
  • 打赏
  • 举报
回复
to purexu(南极之星)
a+ 匹配a,aa,aa..,不是两个以上。
想要得到a@aabaab
reg1=/^a+(?=b)/;
gdjxlhc 2003-12-05
  • 打赏
  • 举报
回复
各位,请帮一下。大家讨论讨论嘛,没紧要的,知道多少就说多少(分多小不重要,能学到才是值得的)。谢谢
purexu 2003-12-05
  • 打赏
  • 举报
回复
+:要匹配一次以上,所以 a+ 要两个 a 以上
gdjxlhc 2003-12-05
  • 打赏
  • 举报
回复
up

87,992

社区成员

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

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