一、javascript正则表达式贪婪和惰性量词详解和实例
友情链接:https://blog.csdn.net/zzx520clx/article/details/84010833

正则表达式中量词有下面六种:

简单的应用上面的还是很简单的。例如:
var str = “bad bbad”;
var patt = /b?a\w*/g;
console.log(str.match(patt))
得到结果:[“bad”, “bad”]


怎么理解贪婪和惰性,这个从字面上去理解就是贪婪的总是企图要匹配整个字符串,而惰性的只要匹配出结果就行了。一个大的特点是:贪婪的是从字符串后面开始匹配

从后面到前面,如果有匹配的了就再也不匹配了。而惰性的是从前面开始匹配,找到匹配的了。记录下匹配结果,又从下面一个字符开始匹配。直到字符串最后。

二、javascript正则表达式 贪婪、惰性和支配量词
友情链接:https://blog.csdn.net/hellochenlu/article/details/52469653








典型案例

正则表达式  /(\w+):\/\/([\w.]+)\/(\S*)/

1)该正则表达式可以匹配各种 url
比如url:https://zhidao.baidu.com/question/876452972714524812.html
2)该正则表达式的具体解释:
a)最左最右的 / 先忽略 是正则的界定符,表示正则的开始结束
b)(\w+) 表示长度大于1的字符串
c): 比较单纯就是表示 :
d)// 这个表示 // 因为 / 跟上述界定符长得一样会导致程序懵逼,所以前面加了 \ 来转义
e)([\w.]+) 表示长度大于1 由\w和 .(点) 组成的字符串
f)/ 同上
g)(\S*) 除空白符号之外的的任意字符任意长度
h)用 () 括起来表示要在代码里捕获这里面匹配的内容

FINAL、友情习题
48道JavaScript正则表达式测试题
1、给定正则表达式/^(SE)?[0-9]{12}/,满足此匹配条件的字符串是:()A、"123456789123"B、"SI12345678"C、"1234567890"D、"ESX1234567Y"2、给定正则表达式/([1−9]∣[1−9][0−9]∣[1−9][0−9][0−9])/,满足此匹配条件的字符串是:() A、"123456789123" B、"SI12345678" C、"1234567890" D、"ESX1234567Y" 2、给定正则表达式 /^([1-9]|[1-9][0-9]|[1-9][0-9][0-9])/,满足此匹配条件的字符串是:()A、"123456789123"B、"SI12345678"C、"1234567890"D、"ESX1234567Y"2、给定正则表达式/([1−9]∣[1−9][0−9]∣[1−9][0−9][0−9])/,满足此匹配条件的字符串是:()
A、“010”
B、“0010”
C、“127”
D、“10000”
3、给定正则表达式 /1?[0-9]KaTeX parse error: Undefined control sequence: \d at position 62: …0" 4、给定正则表达式 /^\̲d̲+/,满足此匹配条件的字符串是:()
A、“12.345”
B、“1,234.45”
C、"+12.34"
D、“1234567890”

5、浮点数的正则表达式 是/[-+]?\b[0-9].?[0-9]+\b/,满足此匹配条件的恰好匹配的字符串是:()
A、“1234.45”
B、“1,234.45”
C、“1+1=2”
D、".34"
6.科学计数法浮点数正则表达式 /[-+]?\b[0-9]
.?[0-9]+(?:[eE][-+]?[0-9]+)?\b/,满足此匹配条件的恰好匹配的字符串是:()
A、“1,234.45”
B、".34"
C、“12.”
D、"-12.34"

7、匹配一个字符串中两个相邻单词(它们之间可以有一个或者多个空白,如空格、制表符或者任何其他UNICODE空白符)的正则表达式是( )。A、/\b(\b+)\s+\1\b/
B、/\b(\w+)\s+\b/
C、/\b(\w*)\s+\1\b/
D、/\b(\w+)\s+\1\b/
8、已知代码如下,则结果ns变量的值是( )。var s=‘The AAA is a good AAAA.’; var r=/A/; var ns=s.replace(r,‘a’);
A、The aAA is a good AAAA.’
B、The aaa is a good aaaa.’
C、The AAA is a good aAAA.’
D、The aAA is a good aAAA.’

9、已知代码如后面,则结果result[0]的值是( )。var url=/(\w+)?/([\w.]+)/(\S*)/; var text=“Please visit my blog at http://zhuxianzhong.blog.51cto.com/”; var result=text.match(url);
A、http://zhuxianzhong.blog.51cto.com/’
B、http’
C、zhuxianzhong.blog.51cto.com’
D、’

10、给定字符串"

第二,3G资费起反作用。

",求一正则式,能够匹配这当中的内容( )。
A、/

(.?)

/
B、/ /
C、/

()

/
D、/

(?)

/
11、软件开发中常用的匹配一个html标记的正则表达式是/</?[a-z][a-z0-9] [^<>]>/,则符合此格式要求的是( )。
A、<a<>
B、<>
C、abc
D、
12、已知"JavaScript".search(/a(.)a/);,则这个函数返回值是:()
A、2
B、3
C、4
D、1

13、有关String的search函数,说法错误的是:()
A、“JavaScript”.search(/script/i);将返回子串起始位置4
B、如果search的参数不是正则表达式,则首先会通过RegExp构造函数将它转换成正则表达式。
C、search支持全局检索
D、忽略参数regexp的lastIndex属性,总是从string的开始位置搜索

14、String函数replace的语法格式是stringobject.replace(regexp/substr,replacement)。说法正确的是:()
A、参数replacement不是必需参数。
B、replacement可以是字符串,也可以是函数。
C、replacement中的$字符没有什么特定的含义。
D、ECMAScript第5版定义replace()的replacement参数可以用一个函数来代替字符串。

15、String类match函数的语法格式是stringObject.match(searchvalue) 或者 stringObject.match(regexp),下列说法错误的是:()
A、如果regexp参数不是RegExp对象,则需要首先把它传递给RegExp构造函数,将其转换为RegExp对象。
B、函数的返回值存放匹配结果的数组。该数组的内容依赖于regexp是否具有全局标志g。
C、全局匹配返回的数组的内容与非全局匹配返回的数组内容是一样的。
D、代码’1 plus 2 equals 3’.match(/\d+/g); 将找出一个字符串中的所有数字。

16、“123, 456, 789”.split(/\s*,\s*/);的返回结果是:()
A、[“123”,“456”,“789”]
B、[“123”, " 456", " 789"]
C、[“123”, " 456 “, " 789”]
D、["123 ", " 456 ", " 789 "]

17、有关RegExp类exec函数错误的结论是:()
A、exec总是包含它返回的数组中的每一个匹配项的全部细节,无论regexp是否为一个全局模式。
B、exec是所有RegExp和String模式匹配方法中最强大的一个。
C、exec在string中搜索匹配regexp的文本。如果它找到一个匹配项,它将返回一个由匹配结果组成的数组;否则,它将返回null。返回数组的元素0是匹配的文本。
D、不可以重复调用exec(),以便循环遍历一个字符串中所有的匹配项。

18、有关RegExp类的test方法正确的结论是:()
A、test用于测试字符串string是否包含匹配参数regexp的文本,如果包含则返回1;否则,返回0。
B、/java/i.test(“ECMAScript”);将返回true
C、r.test(s)等价于(r.exec(s)!=null)
D、/java/i.test(“JavaScript”);返回false

19、匹配一个英文句子(假设句子最后没有标点符号)最后一个单词的正则表达式有( )。
A、\b(\w+)\s*$
B、\b(\w+)\s+$
C、\s(\w+)\s*$
D、\b(\w+)\b*$

20、已知Visa卡号可能有13位或者16位,且首位总是为4。则用于匹配Visa卡号的正则表达式有( )。
A、/^5[1-5][0-9]{14}KaTeX parse error: Undefined control sequence: \d at position 13: / B、/^5[1-5]\̲d̲{14}/
C、/5[^1-5][0-9]{14}KaTeX parse error: Undefined control sequence: \d at position 9: / D、/^(4\̲d̲{12}(?:\d{3})?)/

21、给定正则表达式 /\b0[xX][0-9a-fA-F]+\b/,满足此匹配条件的字符串有( )。
A、“0XDEADBEEF”
B、“12345678”
C、“deadbeef”
D、“12”
22、在HTML文件中经常遇到注释行,对应这种注释行的正则表达式是//,满足此匹配条件的字符串有( )。
A、""
B、“

First paragraph


C、“ Link”
D、" "
23、GUID数据用于标志对象的唯一性,其对应的正则表达式是/\b[A-F0-9]{8}(?:-[A-F0-9]{4}){3}-[A-F0-9]{12}\b/,则下面不符合此格式要求的假GUID数据有:( )
A、“12345678-90AB-CDEF-1234-567890ABCDEF”
B、“X2345678-90AB-CDEF-1234-567890ABCDEX”
C、“2345678-90AB-CDEF-1234-567890ABCDE”
D、“1234567890ABCDEF1234567890ABCDEF”
24、符合/\b([a-z0-9]+(-[a-z0-9]+) .)+[a-z]{2,}\b/g的域名(或者其中的子串与之相匹配的)有( )。
A、www.regexbuddy.com
B、www.regular-expressions.info
C、http://www.cocoachina.com/
D、https://nodejs.org/
25、已知MasterCard信用卡必须包含16位数字。在这16个数字中,前两个数字必须是51-55之间的数字。则如下的正则表达式中合乎匹配MasterCard信用卡的有( )。
A、/^5[1-5][0-9]{14}KaTeX parse error: Undefined control sequence: \d at position 13: / B、/^5[1-5]\̲d̲{14}/
C、/5[^1-5][0-9]{14}/D、/5[1−5][0−9]14,14/ D、/^5[1-5][0-9]{14,14}/D、/5[1−5][0−9]14,14/
26、以下说法错误的有:( )
A、JS中如果正则表达式中出现“(?=p)”部分,它有可能是一种分组。
B、JS中如果正则表达式中出现“(?!p)”部分,它有可能是一种分组。
C、JS正则表达式理论中?(包括与其他字符相结合的情况)至少有四种含义。
D、\B用于匹配单词边界的字符,与\b含义正好相反。
27、IPv4的精确匹配的正则表达式为 /\b(???:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]).){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\b/,则与之相匹配的符合此表达式(或者其中的子串)有( )。
A、0.0.0.0
B、255.255.255.255
C、256.256.256.256
D、127.0.0.1
28、匹配一个html标记的正则表达式是/</?[a-z][a-z0-9]
[^<>] >/,则符合此格式要求的有( )。
A.
B.
C.</?a>
D.

29、JS程序运行时每次遇到对象直接量(初始化表达式)诸如{}和[]的时候都会创建新对象。()
A、正确
B、错误
30、要想在正则表达式中按照直接量匹配反斜线本身,必须使用反斜线将其转义。()
A、正确
B、错误
31、WINDOWS下,要摘取绝对路径字符串最前端的磁盘驱动器部分(即A:/B:/C:/…),用正则表达式实现是/2?()
A、正确
B、错误
32、\W这个字符类等价于字符类[a-zA-Z0-8]。()
A、正确
B、错误
33、/[\s\d]/就匹配任意空白符或者数字。()
A、正确
B、错误
34、/
comment /形式是多种语言中的重要注释形式,它相应的正则表达式是//*.?*//。()
A、正确
B、错误
35、0到999间的任意整数对应正则表达式是/[^0-9]{1,3} KaTeX parse error: Expected group after '_' at position 58: …是匹配模式/^[A-Z0-9._̲%+-]+@[A-Z0-9.-…/的有效的Email地址。()
A、正确
B、错误
37、\D等价于[ \d]而\W等价于[\w]。()
A、正确
B、错误
38、在JS正则表达式中,当n=m时,{n,m}等价于{m}或者{n}。()
A、正确
B、错误
39、正则表达式:/[^(]+/ 匹配一个或者多个非左括号ASCII字符。()
A、正确
B、错误
40、在使用“ ”和“?”时,由于这两个字符可能匹配0个字符,因此它们允许什么都不匹配。()
A、正确
B、错误
41、/a
/.test(‘Objective C’);返回结果为true。()
A、正确
B、错误
42、量词也可以嵌套使用。()
A、正确
B、错误
43、贪婪量词先判断整个字符串是不是一个匹配。如果没有发现匹配,它去掉最后字符串中的最后一个字符,并再次尝试匹配判断。()
A、正确
B、错误
44、惰性量词先判断字符串中的第一个字母是不是一个匹配。如果仅仅这一个字符还不够,就读入下一个字符再次尝试匹配。()
A、正确
B、错误
45、使用非贪婪的匹配模式所得到的结果不会与期望不一致。()
A、正确
B、错误
46、字符串"123456789123"匹配正则表达式/^(SE)?[0-9]{12}$/。()
A、正确
B、错误
47、已知英语语句“Important word is the last one.”,则正则表达式/^(.+?)\b/匹配的是单词one。()
A、正确
B、错误
48、在WEB表单中,要想让用户以dd/mm/yyyy的格式输入日期的话,可以借助正则表达式/\d{1,2}/\d{1,2}/\d{4}/来验证。()
A、正确
B、错误


  1. 0-5 ↩︎

  2. A-Za-z ↩︎

JavaScript 正则表达式相关推荐

  1. JavaScript正则表达式快速判断技巧

    原文:JavaScript正则表达式快速判断技巧 这里是JS的正则的一点心得,并不是最完整的规则汇总,更侧重实际运用中的快速判断,初学者接触正则之后往往会被一堆星号括号给弄晕,有了一些速判技巧就能从整 ...

  2. javascript 正则表达式详解

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

  3. 经典JavaScript正则表达式实战

    来源:http://www.cainiao8.com/web/js_note/js_regular_expression_blueidea.html 目录 1. 正则表达式实战...1    2. 匹 ...

  4. 温故知新 javascript 正则表达式

    温故知新 javascript 正则表达式 转载:http://www.cnblogs.com/libinqq/archive/2008/07/31/1257699.html 很长时间没看 正则表达式 ...

  5. javascript正则表达式小结

    总结了一下javascript正则表达式的内容.表格形式,一目了然.辅以Example图形解释. 一.元字符 二.反义字符 三.转义字符 四.重复匹配 五.分组/捕获 六.贪婪与惰性 七.修饰符 ex ...

  6. JavaScript正则表达式详解(一)正则表达式入门

    JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望 ...

  7. 好程序员web前端分享使用JavaScript正则表达式如何去掉双引号

    为什么80%的码农都做不了架构师?>>>    好程序员web前端分享使用JavaScript正则表达式如何去掉双引号,最近接了一个项目,项目需求需要用js正则表达式过滤掉页面文本域 ...

  8. JavaScript 正则表达式

    JavaScript  正则表达式 版权声明:未经授权,严禁转载! 正则表达式 什么是正则表达式 正则表达式是用来描述一种特定格式的字符规则的表达式. 正则表达式常用语在一段文本中搜索,匹配或者替换特 ...

  9. js php 正则差别,JavaScript正则表达式的浏览器的差异

    JavaScript中的正则表达式在不同的浏览器中得到的结果可能会有差异,下面把正则表达式在五大主流浏览器(IE.Firefox.Chrome.Safari.Opera,以当前版本为准)之间的差异整理 ...

  10. 玩转JavaScript正则表达式

    Why Regular Expression 我们先来看看,我们干哈要学正则表达式这玩意儿: 复杂的字符串搜寻.替换工作,无法用简单的方式(类似借助标准库函数)达成. 能够帮助你进行各种字符串验证. ...

最新文章

  1. Java案例——统计字符串中每个字符串出现的次数
  2. shell 读取配置文件
  3. python读取excel指定列-Python读取excel指定列生成指定sql脚本的方法
  4. mysql 8添加账号赋予权限
  5. 《云原生人才计划之Kubernetes 技术图谱》发布!
  6. 解决-bash: make: command not found安装提示错误
  7. c 给定字符串中查找_面试 | 查找类算法精析
  8. Linux之Ubuntu下安装屏幕录像软件(SimpleScreenRecorder)【摘抄】
  9. 简洁的c++http协议获取内容(二)--获取服务器图片
  10. Java和C的关系及发展历程
  11. PreparedStatement批量处理和事务
  12. Web Service(二):cxf 实现
  13. Enterprise Library 4.0 - May 2008 发布了
  14. matlab生成正交试验,正交表的构造方法及Matlab实现.pdf
  15. 数字图像来源:光学成像系统
  16. DM6437 720P调试问题记录
  17. 1、spring之Resource加载
  18. Spring 事务源码(6)—createTransactionIfNecessary处理事务属性并尝试创建事务【两万字】
  19. 部署静态网站的五种方法
  20. webstorm插件使用

热门文章

  1. ET5.0 配置Excel
  2. C语言判断关系R是否为自反关系
  3. 什么是DNS云解析?云解析和普通解析有什么区别?
  4. 服务器接显示器重影,学生能够选择影音服务器中的考试试卷进行自测测试结束系统将自动批阅并显示标.doc...
  5. Githut Token (hidden): Githut 安装验证
  6. php输出次方,PHP 计算2的N次方代码
  7. Kali Linux破解WiFi密码完整步骤
  8. vivado保存波形图_FPGA开发:Vivado时序波形图保存和读取
  9. “荣耀10X”更名背后的现实逻辑与未来风暴
  10. Unity操作文件对话框