这篇文章主要介绍了js正则表达式中的问号几种用法,比如+?,*?,{2,3}?可以停止匹配的贪婪模式,感兴趣的朋友可以参考下

在表示重复的字符后面加问号,比如+?,*?,{2,3}?可以停止匹配的贪婪模式。

var pattern=/\w{2,3}/;
console.log("aaaa".match(pattern)[0]);
/*结果"aaa";贪婪模式下会尽可能多的匹配,
所以会匹配3个重复的字符
*/
var pattern2=/\w{2,3}?/;
console.log("aaaa".match(pattern2)[0]);
/*
*结果"aa";加问号后会尽可能少的匹配重复次数,
*所以匹配到了2个重复的字符
*/

在分组内使用?:可以产生没有编号的分组,比如

var pattern=/(ab)\w+(ba)/;
console.log("abcba_".replace(pattern,"$1"));
/*结果"ab_";匹配到的字符被第一个分组(ab)
*替换
*/
var pattern2=/(?:ab)\w+(ba)/;
console.log("abcba_".replace(pattern2,"$1"));
/*
*结果"ba_";第一次分组内加入了?:,产生的是一个
*没有编号的分组,所以$1匹配的字符是第二个分组,
*也就是第一个编号分组(ba)相匹配的文本内容
*/

(?=)和(?!);零宽正向断言和负向断言,括号内表示某个位置右边必须和=右边匹配上,或者不和!后的字符匹配。

var pattern=/str(?=ings)ing/;
console.log("strings.a".match(pattern));
console.log("strings.a".match(/string(?=s)/));
console.log("string_x".match(pattern));
console.log("string_x".match(/string(?=s)/));
/*前两个结果是["string"],后两个结果是null;
*str(?=ings)ing/匹配"string",r后面的位置右边必须跟
*上ings;和/string(?=s)/一样;匹配"string";g后面的位置
*的右边必须跟一个s。"string_x"虽然也含有"string"但是
*不满足(?=...)括号内的条件
*/
var pattern=/string(?!s)/;
console.log("strings".match(pattern));//null
console.log("string.".match(pattern));//["string"]
/*(?!...)某位置右边不能有!后匹配的字符,
*string(?!s)/匹配"string","g"后不能跟"s"
*/

js正则表达式中的问号几种用法小结的更多相关文章

  1. js正则表达式中的问号使用技巧总结

    这篇文章主要介绍了js正则表达式中的问号几种用法,比如+?,*?,{2,3}?可以停止匹配的贪婪模式等例子的解析. 在表示重复的字符后面加问号,比如+?,*?,{2,3}?可以停止匹配的贪婪模式. v ...

  2. java中 this 的三种用法

    Java中this的三种用法 调用属性 (1)this可以调用本类中的任何成员变量 调用方法(可省略) (2)this调用本类中的成员方法(在main方法里面没有办法通过this调用) 调用构造方法 ...

  3. js中继承的几种用法总结(apply,call,prototype)

    一,js中对象继承 js中有三种继承方式 1.js原型(prototype)实现继承 <SPAN style="BACKGROUND-COLOR: #ffffff">& ...

  4. JS 正则表达式中的特殊字符

    正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...

  5. java中super的两种用法

    通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说它类似于C语言中的全局函数和全局变量.但是,并不是说有了这种便利,你便可以随处使用,如果那样的话,你便需要认真考虑一下自 ...

  6. C#中this的 四种 用法

    C#中的this用法,相信大家应该有用过,但你用过几种?以下是个人总结的this几种用法,欢迎大家拍砖,废话少说,直接列出用法及相关代码. this用法1:限定被相似的名称隐藏的成员 /// < ...

  7. js正则表达式中test,exec,match方法的区别

    test test 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var reg = new RegExp("1." ...

  8. js正则表达式中的特殊字符

    正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...

  9. Jquery中toggleClass的两种用法

    css样式: <style type="text/css"> .bgc{ background-color:#F00; color: #FFF} </style& ...

随机推荐

  1. 移动端 Web 开发前端知识整理

    文章来源: http://www.restran.net/2015/05/14/mobile-web-front-end-collections/ 最近整理的移动端 Web 开发前端知识,不定期更新. ...

  2. &lt;概要&gt;

    虽然不知道这个博客园网站是中国还是国外,但是我倾向于中国,我是一名爱国者.我喜欢分享自己的学习经验,喜欢学习新的知识. 截止到2016年01月28日我到这个公司的第七天,在这七天里,我学习了一些东西, ...

  3. jQuery multiselect的使用

    1,下载插件 https://github.com/ehynds/jquery-ui-multiselect-widget

  4. Ubuntu16.04下安装.NET Core

    以下为控制台输入代码序列一.sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet ...

  5. css知多少(4)——解读浏览器默认样式

    上一节<css知多少(3)——样式来源与层叠规则>介绍了样式的五种来源,咱们再通过一张图回顾一下. 对于上面的三层,咱们大概都比较熟悉了.下面的两层中,用户自定义样式一般也就是改一改字号大 ...

  6. hdu 4049 2011北京赛区网络赛J 状压dp ***

    cl少用在for循环里 #include<cstdio> #include<iostream> #include<algorithm> #include<cs ...

  7. ChIP-seq Peak caller MACS index out of range问题解决

    使用MACS1.4 进行peak calling的时候发现一个比较奇怪的问题: 我的某些文件无法被MACS1.4 进行peak calling,出现如下的信息: Traceback (most rec ...

  8. linux下的struct sigaction

    工作中使用案例: struct sigaction act; act.sa_sigaction = handleSignal; act.sa_flags = SA_SIGINFO; sigemptys ...

  9. redis tcp-backlog配置

    在redis2.8版本中有一个tcp-backlog配置, 说明如下: # TCP listen() backlog.## In high requests-per-second environmen ...

  10. iphone SE 自带视频播放器要求的视频格式转换参数