JS正则

194 阅读2分钟

基本元字符

  1. . : 匹配除了换行符之外的任何单个字符
  2. \ : 在非特殊字符之前的反斜杠表示下一个字符是特殊的,不能从字面上解释。例如,没有前\的'b'通常匹配小写'b',无论它们出现在哪里。如果加了'\',这个字符变成了一个特殊意义的字符,反斜杠也可以将其后的特殊字符,转义为字面量。例如,模式 /a*/ 代表会匹配 0 个或者多个 a。相反,模式 
    /a\*/ 将 '*' 的特殊性移除,从而可以匹配像 "a*" 这样的字符串。
  3. | : 逻辑或操作符
  4. [] :定义一个字符集合,匹配字符集合中的一个字符,在字符集合里面像 .\这些字符都表示其本身
  5. [^]:对上面一个集合取非
  6. - :定义一个区间,例如[A-Z],其首尾字符在 ASCII 字符集里面

数量元字符

  1. {m,n} :匹配前面一个字符至少 m 次至多 n 次重复,还有{m}表示匹配 m 次,{m,}表示至少 m 次
  2. + : 匹配前面一个表达式一次或者多次,相当于 {1,},记忆方式追加(+),起码得有一次
  3. * : 匹配前面一个表达式零次或者多次,相当于 {0,},记忆方式乘法(*),可以一次都没有
  4. ? : 单独使用匹配前面一个表达式零次或者一次,相当于 {0,1},记忆方式,有吗?,有(1)或者没有(1),如果跟在任何量词*,+,?,{}后面的时候将会使量词变为非贪婪模式(尽量匹配少的字符),默认是使用贪婪模式。比如对 "123abc" 应用 /\d+/ 将会返回 "123",如果使用 /\d+?/,那么就只会匹配到 "1"。

位置元字符

  1. ^ : 单独使用匹配表达式的开始
  2. \$ : 匹配表达式的结束
  3. \b:匹配单词边界
  4. \B:匹配非单词边界
  5. (?=p):匹配 p 前面的位置
  6. (?!p):匹配不是 p 前面的位置

特殊元字符

  1. \d[0-9],表示一位数字,记忆方式 digit
  2. \D[^0-9],表示一位非数字
  3. \s[\t\v\n\r\f],表示空白符,包括空格,水平制表符(\t),垂直制表符(\v),换行符(\n),回车符(\r),换页符(\f),记忆方式 space character
  4. \S[^\t\v\n\r\f],表示非空白符
  5. \w[0-9a-zA-Z],表示数字大小写字母和下划线,记忆方式 word
  6. \W[^0-9a-zA-Z],表示非单词字符

标志字符

  1. g : 全局搜索 记忆方式global
  2. i :不区分大小写 记忆方式 ignore
  3. m :多行搜索

JS使用

search 接受一个正则作为参数,如果参入的参数不是正则会隐式的使用 new RegExp(obj)将其转换成一个正则,返回匹配到子串的起始位置,匹配不到返回-1

var str = 'For more information, see Chapter 3.4.5.1';
var re = /see (chapter \d+(\.\d)*)/i;
var found = str.search(re);    //  22