请问这个正则表达式/\b([a-z]+) \1\b/gim 里 " \1",m是什么意思?

wangfox 2003-04-16 02:54:05
在正则表达式中“向后引用”这一节里有这么一个例子:
var ss = "Is is the cost of of gasoline going up up?.\n";
var re = /\b([a-z]+) \1\b/gim;
var rv = ss.replace(re,"$1");
最后输出rv得到如下:
Is the cost of gasoline going up?
但我不明白:
([a-z]+) \1 这匹配什么呀,m又是什么意思呢,$1呢?
...全文
613 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
blues-star 2003-04-16
  • 打赏
  • 举报
回复
后向引用
wangfox 2003-04-16
  • 打赏
  • 举报
回复
我明白了!
谢谢 HStone(石头) !!!
HStone 2003-04-16
  • 打赏
  • 举报
回复
对,每个()就是一个子匹配
wangfox 2003-04-16
  • 打赏
  • 举报
回复
/^(\d{4})([-\/])(\d{1,2})\2(\d{1,2})$/
里是不是\1=$1=(\d{4})
\2=$2=(-\/)
()就是分组,\1,$1指第一个分组,\2,$2指第二个分组。
HStone 2003-04-16
  • 打赏
  • 举报
回复
例如,日期可以写为2000/12/03或2004-12-03,但写成2004/12-03或2004-12/03就不好了

所以用/^(\d{4})([-\/])(\d{1,2})\2(\d{1,2})$/来匹配,里面的\2就是([-\/])的向后引用了
HStone 2003-04-16
  • 打赏
  • 举报
回复
'\1'是用来引用正则表达式中的第一个子匹配,
/\b([a-z]+) \1\b/gim有些类似/\b([a-z]+) ([a-z]+)\b/gim来的,但在本例中它要求前面([a-z]+)和后面([a-z]+)匹配到的子串要相同

m是指多行查找
wangfox 2003-04-16
  • 打赏
  • 举报
回复
还是不明白。空格呢?
HStone 2003-04-16
  • 打赏
  • 举报
回复
'\1'和'$1'都是用来指定第一个子匹配

87,909

社区成员

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

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