# 正则表达式 * \d :匹配一个数字 * \w : 匹配任意一个字母或数字 * . : 可以匹配任意字符串 * \* : 可以匹配任意个字符(包括0个) * +: 至少一个字符 * ? : 表示0个或1个字符 * {n} :表示n个字符 * {n-m} : 表示n-m个字符 * \[ \] :表示范围 * \[0-9a-zA-Z\\_\] : 可以匹配一个数字、字母或者下划线 * \[0-9a-zA-Z\\_\]+: 可以匹配至少由一个数字、字母或者下划线组成的字符串 * \[0-9a-zA-Z\_$\]\[0-9a-zA-Z\_\_$\]\* : 可以匹配由数字、字母或者下划线,后接任意个由一个数字、字母或者下划线、$组成的字符串 # RegExp JS有2种方式创建一个正则表达式。 第一种方式是直接通过/正则表达式/写出来。 第二种 是通过new RegExp\('正则表达式'\)创建一个RegExp对象。 #### 注意 因为第二种的写法问题,所以每个`\` 需要转义,也就是 `\\` ``` ``` # 分组 除了简单地判断是否匹配外,正则表达式还可以用来提取分组 ,用 `()` ``` ``` * 如果正则表达式中定义了组,就可以在RegExp对象上用exec\(\)方法提取出子串来。 * exec\(\)方法在匹配成功后会返回一个Array,第一个元素为正则表达式匹配到的整个字符串,后面的元素则表示匹配成功的子串。 * exec\(\)方法在匹配失败后会返回null # 贪婪匹配 由于 正则表达式默认使用贪婪匹配模式,因此会造成一些问题。比如 ``` var res = /^(\d+)(0*)$/; res.exec('102300'); //['102300','102300',''] ``` 由于\d+采用贪婪匹配模式,所以会匹配到后面的0,所以加上\d+?代表使用非贪婪匹配模式 ``` var res = /^(\d+?)(0*)$/; res.exec('102300'); ```