加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式断言语句

发布时间:2020-12-14 06:36:27 所属栏目:百科 来源:网络整理
导读:javaScript正则表达式常用三种语法做一个区分: ?: ?= ?! 1、 ?: 非获取匹配 同 () 都是对正则进行分组,但是两者有区别: (?:XXX) 只匹配,但不能获取括号内的匹配字符 () 匹配到并且能获取括号内的匹配字符 'JavaScript is fun'.replace(/([Jj]ava)(?:[Ss]

javaScript正则表达式常用三种语法做一个区分:

  • ?:
  • ?=
  • ?!

1、?:非获取匹配

()都是对正则进行分组,但是两者有区别:

  • (?:XXX) 只匹配,但不能获取括号内的匹配字符
  • () 匹配到并且能获取括号内的匹配字符
'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、?= 正向肯定预查,非获取匹配

(?=pattern) 在任何匹配pattern的字符串开始处匹配查找字符串,不消耗字符,相当于一种修饰。

?=?:的区别,可以从下面例子中看处理:

"JavaScript is fun".replace(/([Jj]ava)(?:[Ss]cript)/,"$1");  // "Java is fun"  
"JavaScript is fun".replace(/([Jj]ava)(?=[Ss]cript)/,"$1");  // "JavaScript is fun"

通俗点说:

?= 只是一个 修饰,它不是主体,但是不符合这个修饰的不要,符合的也只是匹配到了需要修饰的主体部分。
?: 他是一个主体,但是不能获取

3、?! 正向否定预查,非获取匹配

不符合parttern的就匹配成功,这个和(?=parttern)正好相反。

'a.jpg,a.png,a.gif,a.jpg'.replace(/a(?!.jpg)/g,'****'); // "a.jpg,****.png,****.gif,a.jpg"

// 和?=做一个对比
'a.jpg,a.jpg'.replace(/a(?=.jpg)/g,'****');  // "****.jpg,****.jpg"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读