javascript-正则替换replace中$1的用法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-正则替换replace中$1的用法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1938字,纯文字阅读大概需要3分钟。
内容图文
preg_replace("/([&?]uid=)[^?&]*/",'$1173','http://localhost/mobile/index.php?c=wish&uid=181')
//
输出:http://localhost/mobile/index.php?c=wish73
如上面$replacement ($1173)
表示的,php以为我要把$11
加上73
,但其实我是想让 $1
加上173
,请问怎样改才能符合我的预期?
刚刚在写问题的时候突然想到把
$replacement
改成$01
说不定可以,没想到真可以了,现在是这样'$01173'
另外,同样的$replacement($1173)
放到js里表现的结果却是我预期的,那js里想要$11
加上73
怎么办?
回复内容:
preg_replace("/([&?]uid=)[^?&]*/",'$1173','http://localhost/mobile/index.php?c=wish&uid=181')
//
输出:http://localhost/mobile/index.php?c=wish73
如上面$replacement ($1173)
表示的,php以为我要把$11
加上73
,但其实我是想让 $1
加上173
,请问怎样改才能符合我的预期?
刚刚在写问题的时候突然想到把
$replacement
改成$01
说不定可以,没想到真可以了,现在是这样'$01173'
另外,同样的$replacement($1173)
放到js里表现的结果却是我预期的,那js里想要$11
加上73
怎么办?
试试$01173
?
JS只是比较智能一点,它发现你的正则里面没有11个分组,所以会把$1173
拆分为$1
和173
两个部分。但是当分组数量达到11个以上时它也就会以能够匹配到的最大的分组来替换了,比如:
'abcdefffgg'.replace(/(f+)fgg/, '$1173'); // abcdeff173,(替换的是第1个分组,ff)
'abcdefffgg'.replace(
/(f+)(a?)(a?)(a?)(a?)(a?)(a?)(a?)(a?)(a?)(fgg)/,
'$1173'); // abcdefgg73(替换的是第11个分组,fgg)
要想在上面的第二个例子里替换第一个分组,可以用$01173
,由于分组最大只能到99,而01
已经满了2位数,所以JS不会再去尝试检查第三位数。你可以在PHP里试试这种方法,我没测试,不知道可不可行。
至于你说的,想让JS在不足11个分组的时候匹配$11
应该是做不到的。
在replace第二个参数里面$实际上是告诉正则表达式引擎,接下来的是一个反向引用(有的语言或工具里面也用\标识),是对正则表达式中匹配出来的组的引用,在你的例子里面就是 ([&?]uid=)
所匹配出来的内容。
我对PHP不是很熟。
回答你的javascript的问题,在js里面$1代表的第一个被匹配到的group。所以结果是正确。
如果你想要$11
这个字符串的加上73
的话,用这个就可以了$$1173
详细说明可参照这里:http://deerchao.net/tutorials/regex/regex.htm#backreference
内容总结
以上是互联网集市为您收集整理的javascript-正则替换replace中$1的用法全部内容,希望文章能够帮你解决javascript-正则替换replace中$1的用法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。