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

  

  所以,/[\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属性的。

javascript正则表达式小技巧的更多相关文章

  1. 你想的到想不到的 javascript 应用小技巧方法

    javascript 在前端应用体验小技巧继续积累. 事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElemen ...

  2. JavaScript 编码小技巧

    三元操作符 如果使用if...else语句,那么这是一个很好节省代码的方式. Longhand: const x = 20; let answer; if (x > 10) { answer = ...

  3. 19 个 JavaScript 编码小技巧

    这篇文章适合任何一位基于JavaScript开发的开发者.我写这篇文章主要涉及JavaScript中一些简写的代码,帮助大家更好理解一些JavaScript的基础.希望这些代码能从不同的角度帮助你更好 ...

  4. JavaScript 转换小技巧

    1.变量转换 看起来很简单,但据我所看到的,使用构造函数,像Array()或者Number()来进行变量转换是常用的做法.始终使用原始数据类型(有时也称为字面量)来转换变量,这种没有任何额外的影响的做 ...

  5. Javascript 编程小技巧总结(部分内容借鉴他人)

    1 – 使用===,而不是== ==(或!=)操作符在需要的时候会自动执行类型转换.===(或!==)操作不会执行任何转换.它将比较值和类型,而且在速度上也被认为优于==. 2 – 使用闭包实现私有变 ...

  6. JavaScript 调试小技巧

    'debugger;' 除了console.log,debugger就是另一个我很喜欢的快速调试的工具,将debugger加入代码之后,Chrome会自动在插入它的地方停止,很像C或者Java里面打断 ...

  7. 22条常用JavaScript开发小技巧

    1.使用var声明变量 如果给一个没有声明的变量赋值,默认会作为一个全局变量(即使在函数内赋值).要尽量避免不必要的全局变量. 2.行尾使用分号 虽然JavaScript允许省略行尾的分号,但是有时不 ...

  8. JavaScript调试小技巧

    1.‘debugger;’ 除了console.log,debugger就是另一个我很喜欢的快速调试的工具,将debugger加入代码之后,Chrome会自动在插入它的地方停止,很像C或者Java里面 ...

  9. JavaScript使用小技巧

    原文:45 Useful JavaScript Tips, Tricks and Best Practices作者:Saad Mousliki 在这篇文章里,我将分享一些JavaScript的技巧.秘 ...

随机推荐

  1. DataBase -- SQL INNER JOIN

    SQL INNER JOIN 关键字 在表中存在至少一个匹配时,INNER JOIN关键字返回行. INNER JIN关键字语法 SELECT column_name(s) FROM table_na ...

  2. 使用jdk中的java.sql包中的方法进行jdbc连接

    首先说明用 java.sql包进行jdbc连接的步骤: 1.加载数据库的驱动.(一般是oracle和mysql,oracle的数据驱动名是:Oracle.jdbc.driver.OracleDrive ...

  3. Mysql 乱码配置

    转自: http://www.ha97.com/5359.html 一.登录MySQL查看用SHOW VARIABLES LIKE ‘character%’;下字符集,显示如下: +--------- ...

  4. Spinner用法与ListView用法

    参考: http://blog.csdn.net/u012960536/article/details/46732421 --------------------------------------- ...

  5. gdb 脚本

    不满足于一条一条执行命令,我们可以将命令写进脚本里面,连续执行, 1: gdb启动会在当前目录寻找.gdbinit文件,并读取里面的命令列表 2: 我们可以启动gdb 时,加-x cmd.gdb 来指 ...

  6. Android NDK使用

    1. 介绍 这里主要想记录一下Android NDK开发C程序的使用方法 2. ndk下载 到google官网或者国内镜像网站下载android-ndk形如:  android-ndk-r<ve ...

  7. UVA 10912 Simple Minded Hashing

    题意就略了.刚一看被数据吓住了.看到字符要求严格递增.那么如果字串长大于26那必然方案数目为0:同时1+2+3....+24+25+26=351如果大于这个数也是不可能的 令dp[i][j][k]表示 ...

  8. JQuery实现多个菜单的显示隐藏

    (如有错敬请指点,以下是我工作中遇到并且解决的问题) 效果图: 点击各个菜单显示/隐藏,以及点击灰色部分隐藏. 比如点击了第一个菜单,然后点击第二个菜单,第一个菜单会隐藏,再显示第二个菜单,不会叠加. ...

  9. Fiddler抓包4-工具介绍(request和response)【转载】

    本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/p/6719717.html 前言 本篇简单的介绍下fiddler界面的几块区域,以及各自区域到 ...

  10. [BZOJ1070][SCOI2007]修车 费用流

    1070: [SCOI2007]修车 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 6209  Solved: 2641[Submit][Status] ...