javascript - js正则?:的用法?
PHP中文网
PHP中文网 2017-04-11 12:59:20
[JavaScript讨论组]

我知道?:是表示不匹配的意思,那具体用法呢,可否举例子说明?

PHP中文网
PHP中文网

认证0级讲师

全部回复(4)
高洛峰

(...):既分组又捕获;
example:"ababcd".replace(/(ab)+(cd)+/, $2+$1);
explain:'()' 使得 '+' 号可以作用在一组字符(ab)中,而且可以通过 '$n' 引用括号里的字符(从左边第一个 ‘(’ 数起,第 1 个用 '$1')。
result:"cdab";

(?:...):只分组不捕获;
example:"ababcd".replace(/(?:ab)+(cd)+/, $1);
explain:'(?:)'只分组的意思就是,它的作用就是让 ‘+’ 号的范围变大而已,而且这种括号 ‘(?:)’ 的值不能通过 $n 来引用,也不会计数,就是说上例中的 ‘$1’ 是 "cd";
result:"cd";

伊谢尔伦

?:是忽略分组吧。就是不会对分组进行记录。

比如'13588884444'.replace(/(\d{3})(\d{4})(\d{4})/g, '$1****$3'),第二个分组显然没什么卵用,'13588884444'.replace(/(\d{3})(?:\d{4})(\d{4})/g, '$1****$2')忽略掉这个分组,然后反向引用$2就行了。

当然只是举个例子,因为第二个完全没有必要使用分组。正则自己写得不多,暂时没想到别的好的例子!

阿神

预搜索时可以指定匹配的结果包括或不包括预搜索内容,
实例:http://blog.163.com/m13864039...

PHP中文网

(?:exp)是 非捕获分组

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号