一、中括号[]里面的特殊字符是不用转义的,例如[/]、[.]、[*]、[?]、[+]都是可以直接匹配对应的字符\ . *?+。下面是测试结果:

  

  所以,/[\d.]/这个正则表达式实际上是匹配数字字符或者字符".",作用等同于/[\d\.]/

  

二、match()、exec()和test()的区别

1. regexp.test()

test() 方法执行一个检索,用来查看正则表达式与指定的字符串是否匹配。返回 true 或 false

/in[a-z]/g.test("ing");   // true
/in[a-z]/g.test("string"); //true var reg = new RegExp("in[a-z]", "g");
reg.test("string"); // true

2.regexp.exec(string)

如果成功匹配,exec 方法返回一个数组,并且更新正则表达式对象的属性。返回的数组包括匹配的字符串作为第一个元素,紧接着一个元素对应一个成功匹配被捕获的字符串。

另外,返回的数组对象还包含indexinput属性:

  • index表示被匹配的字符串的第一个字符在源字符串中的位置。
  • input表示源字符串。
var re = /in([a-z])in([a-z])/g;
var result = re.exec("stringina strinaing"); //["ingina", "g", "a"] result .index; //
result .input; // "stringina strinaing"
对象 属性/索引 描述 例子
result [0] 上一次匹配到的字符 ingina
[1], ...[n ] 括号中的分组捕获
[1] = g
[2] = a
index 匹配到的字符位于原始字符串的基于0的索引值 3
input 原始字符串
stringina strinaing
re lastIndex 下一次匹配开始的位置 9
ignoreCase 是否使用了'i'标记使正则匹配忽略大小写 false
global 是否使用了'g'标记来进行全局的匹配. true
multiline

是否使用了'm'标记使正则工作在多行模式(也就是,^ 和 $ 可以匹配字符串中每一行的开始和结束(行是由 \n 或 \r 分割的),而不只是整个输入字符串的最开始和最末尾处。)

false
source 正则模式的字符串 in([a-z])in([a-z])

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec

3. string.match(regexp)

match()返回一个被指定正则匹配到的匹配项数组

如果正则表达式没有 g 标志,返回和 RegExp.exec(str) 相同的结果。

如果正则表达式包含 g 标志,则该方法返回一个包含所有匹配结果的数组。如果没有匹配到,则返回 null

var reg = new RegExp('in([a-z])in([a-z])');
var result = "stringinastringinb".match(reg); // ["ingina", "g", "a"]
result.index; //
result.input; // "stringinastringinb" var reg= new RegExp('in([a-z])in([a-z])','g');
var result ="stringinastringinb".match(reg); // ["ingina", "inginb"]
result.index; // undefined
result.input; // undefined

PS:另外要注意的是lastIndex只对exec()和test()方法起作用,string.match(regexp)是不会影响regexp这个正则的lastIndex属性的。

最新文章

  1. js 中关联数组
  2. diary and html 文本颜色编辑,行距和其它编辑总汇
  3. 使用JS脚本获取url中的参数
  4. wp8 入门到精通 测量代码执行时间
  5. python知识点记录(一):
  6. Codeforces Good Bye 2015 D. New Year and Ancient Prophecy 后缀数组 树状数组 dp
  7. 单源最短路径—Bellman-Ford和Dijkstra算法
  8. TPL异步并行编程之取消任务
  9. luogu P3398 仓鼠找sugar [LCA]
  10. Java中参数传递问题
  11. 注册表操作(VC_Win32)
  12. Web自动化之Headless Chrome测试框架集成
  13. angular-cli学习笔记 快速创建代码模板
  14. 【Spark篇】---Spark资源调度和任务调度
  15. Java AQS 概述
  16. Edge BUG欣赏之四摸鸡与IP地址的恩怨
  17. DotNetty网络通信框架学习之初识Netty
  18. linux mint 安装 opencv2.4
  19. Installing Office Online Server for SharePoint 2016
  20. Multi-Nim游戏结论不变证明

热门文章

  1. zoj 1002 Fire Net (二分匹配)
  2. [转]busybox登陆后没要求输入密码的解决办法
  3. 「JOISC 2015 Day 1」卡片占卜
  4. java.net.BindException: Address already in use: JVM_Bind <null>:8080错误
  5. Codeforces Round #328 (Div. 2) B
  6. AirPlay、DLNA、Miracast三大无线技术介绍
  7. Linux下的ACL
  8. windows 下 mySQL 镜像安装文件下载
  9. dpdk 代码分析一 : 内存初始化
  10. ubuntu安装ftp server并匿名访问