正则表达式断言语句

康成
• 阅读 3237

1、?: 非获取匹配

(?:x)匹配x但是不会捕获,不会 $n 获取到(()有区别),但是可以被替换

  • (?:x) 只匹配,不获取
  • () 可以匹配,也可以被获取
'JavaScript is fun'.replace(/([Jj]ava)(?:[Ss]cript)/,"$2");  // "$2 is fun" 获取不到第二个括号内匹配的值
'JavaScript is fun'.replace(/([Jj]ava)([Ss]cript)/,"$2");  // 'Script is fun'

2、?=?!

  • x(?=y) 只有当 x 后面紧跟着 y 时,才匹配 x
  • x(?!y) 只有当 x 后面不紧跟着 y 时,才匹配 x
相似点:两者都不是匹配结果的一部分,既不会被替换掉(?:区别),也不可以被$n获取到(?:一样
// ?= 和 ?! 区别
'a.jpg,a.png,a.gif,a.jpg'.replace(/a(?!\.jpg)/g, '*'); // "a.jpg,*.png,*.gif,a.jpg"
'a.jpg,a.png,a.gif,a.jpg'.replace(/a(?=\.jpg)/g, '*');  // "*.jpg,a.png,a.gif,*.jpg"

// ?: 和 ?= 区别
"JavaScript is fun".replace(/([Jj]ava)(?:[Ss]cript)/,"$1");  // "Java is fun"  
"JavaScript is fun".replace(/([Jj]ava)(?=[Ss]cript)/,"$1");  // "JavaScript is fun"
点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java抓取Https协议url地址的源码的方法
阅读本文之前,请先阅读下文,通过下文将获取到keystore文件:http://www.oschina.net/code/snippet\_273576\_18919(http://www.oschina.net/code/snippet_273576_18919)在此,感谢一下stevenliu(http://my.oschina.net/
Wesley13 Wesley13
3年前
java通过sina端口提取股票历史数据并存入MySQL
 1.提取股票代码代码见:http://www.oschina.net/code/snippet\_2688840\_55337(http://www.oschina.net/code/snippet_2688840_55337) 2抓取sina股票的json页面数据;代码见:http://www.oschina.net/code/snip
Wesley13 Wesley13
3年前
java 反射得到属性与属性值
<divid"cnblogs\_post\_body"class"blogpostbody"<p反射可以破坏所有的封装性,比如这次通过反射得到的属性与属性值;</p<divclass"cnblogs\_code"<divclass"cnblogs\_code\_toolbar"<spanclass"cnblogs\_co
虾米大王 虾米大王
2年前
java代码092
code092.jsp通过FindServlet类查询分页数据所有图书信息ID图书名称价格数量作者<%Listlist1(List)request.getAttribute("list");for(code089book:list1)%
虾米大王 虾米大王
2年前
java代码099
code099.jspInserttitlehere$pageScope.user.name
虾米大王 虾米大王
2年前
java代码018
code018.jsp写入cookiewindow.location.href"code017.jsp";
Stella981 Stella981
3年前
PHP返回Json数据函数封装
/返回Json数据@paramint$code@paramstring$message@paramarray$data@returnstring/publicfunctionretJson($code,$message'
Wesley13 Wesley13
3年前
Oracle:Pivot 转多列并包含多个名称
SELECTFROM(SELECTl.DISTRIBUTOR_ID,d.SKU_CODE,d.WH_CODE,d.ORDER_PACKAGES,d.PRICE,d.YEARLY||d.MONTHLYasYM,d
Stella981 Stella981
3年前
Code
ylbtechCodeNFine:NFine介绍1\.NFine平台介绍返回顶部1、使用时请务必保留来源,请勿用于违反我国法律的web平台、如诈骗等非法平台网站。版权最终解释权归《NFine团队》所有NFine是一套基于ASP.NETMVCEF6Bootstrap开发出来的框架,源代码完全开源,可以帮助你解
Wesley13 Wesley13
3年前
MySQL分组并取每组中create_time字段的最大值, 及这条记录的所有值(理解groupId, 很容易误导)
invest\_order\_code排查单号求获取排查单号相同数大于1的排查单号SELECTinvest_order_codeFROMt_invest_orderGROUPBYinvest_order_codeHAVINGCOUNT(invest_order_code)1求排查单未PC2019042909252998
飞鹅官方账号 飞鹅官方账号
10个月前
五、飞鹅官网API接口文档
接口列表1.获取网站信息请求方法:GET请求URL:/api/site/getSiteInfo请求参数无返回结果json"code":1,"data":"id":1,//id"title":"SampleSiteName",//网站名称"intro":"T