深入浅出正则表达式
Chao 工程师

正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具,合理的使用正则表达式能极大的提升项目开发效率。

注:本文针对熟悉或者有一些正则表达式使用经验但是不深入的人群,如果无毫基础请移步JavaScript RegExp 对象

语法

创建一个正则表达式有两种方式,一种是使用构造函数,一种是使用对象字面量:

1
2
3
4
5
// 使用构造函数
var reg = new RegExp(pattern,modifiers);

// 对象字面量
var reg = /pattern/modifiers;

pattern(模式): 描述了表达式的模式
modifiers(修饰符): 用于指定全局匹配、区分大小写的匹配和多行匹配

1、i 执行对大小写不敏感的匹配。
2、g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
3、m 执行多行匹配。

废话不多说,本文不注重理论,实践才是检验真理的唯一标准。

贪婪(非贪婪)模式

正则表达式(绝大部分语言)默认是贪婪模式,即尽可能匹配多的字符。

示例一:

1
2
3
var str = 'abcd{{efg}}abcd{{xyz}}'
var reg = /{{.*}}/g;
str.match(reg) // {{efg}}abcd{{xyz}}

解读:匹配所有双花括号中出现0次或多次的字符,那为什么结果是’abcd‘,而不是[‘‘, ‘‘],这就是正则的贪婪模式,中间的‘efg}}abcd

 Comments