您的当前位置:首页正文

javascript-正则表达式

2020-11-27 来源:华拓教育

From: 测试正则的网站: 修饰符:
  1. g:global全文搜索,不添加,搜索到第一个匹配停止。

  2. i:ignore case 忽略大小写,默认大小写敏感。

  3. m:multiple lines 多行搜索。

  4. lastIndex:当前表达式匹配内容的最后一个字符的下一个位置

  5. source:正则表达式的文本字符串

正则表达式有2种基本字符类型组成:
  1. 原义文本字符(比如:abc)

  2. 元字符(比如:\b)。元字符是正则表达式中有特殊含义的非字母字符 (.*+?^.|\(){}[])

元字符:
  1. \t:水平制表符

  2. \v:垂直制表符

  3. \n:换行符

  4. \r:回车符

  5. \0:空字符

  6. \f:换页符

字符类:
  1. [abc]:构建一个简单的类(比如:'a1b2c3d4'.replace(/[abc]/g,'X') =》X1X2X3d4)

  2. [^abc]:取反

范围类:
  1. [a-z]:从a到z的任意字符,包含a和z。(比如:'a1b2c3d4aa'.replace(/[a-z]/g,'X') =》X1X2X3X4XX)

  2. [a-zA-Z]:在[]组成的类内部可以连写的。

  3. [a,z]:分割('12345678'.replace(/[1,3]/g,'A') =》A2A45678)

预定义类:
  1. .:除了回车符和换行符之外的所有字符([^\r\n])

  2. \d:数字字符([0-9])

  3. \D:非数字字符([^0-9])

  4. \s:空白符([\t\n\x0B\f\r])

  5. \S:非空白符([^\t\n\x0B\f\r] )

  6. \w:单词字符,包含字符、数字、下划线([a-zA-Z_0-9])

  7. \W:非单词字符([^a-zA-Z_0-9 ])

边界匹配字符:
  1. ^:以xxx开始('@123@abc@a'.replace(/^@./g,'X') =》X23@abc@a)

  2. $:以xxx结束('@123@abc@a'.replace(/@.$/g,'X') =》@123@abcX)

  3. \b:单词边界

  4. \B:非单词边界

量词:
  1. ?:出现0次或1次

  2. +:出现1次或多次

  3. *:出现0次或多次

  4. {n}:出现n次

  5. {n,m}:出现n到m次

  6. {n,}:至少出现n次

贪婪模式:正则表达式会尽可能多的匹配,直到匹配失败。('12345678'.replace(/\d{3,6}/g,'A') =》A78)非贪婪模式:尽可能少的匹配。在量词后面加上?即可。('12345678'.replace(/\d{3,6}?/g,'A') =》AA78) 分组:
  1. 使用()可以达到分组的功能,使量词作用于分组('a1b2c3d4'.replace(/(\w\d){3}/g,'X') =》Xd4)

  2. 或|('a1b2c3d4'.replace(/(a1|b2)/g,'X') =》XXc3d4)

反向引用('2017-05-06'.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2/$3/$1') =》05/06/2017) 忽略分组:不希望捕获某些分组,只需要在分组内加上?:就可以 前瞻:在正则表达式匹配到规则的时候,向前检查是否符合断言,后顾方向相反,JS不支持后顾。
  1. 正向前瞻:exp(?=assert)('a2*3'.replace(/\w(?=\d)/g,'X') =》X2*3)

  2. 负向前瞻:exp(?!assert)

  3. 正向后顾:exp(?<=assert),JS不支持。

  4. 负向后顾:erp((?<!assert),JS不支持。

test(str):用于测试字符串参数中,是否存在匹配正则表达式模式的字符串。(var reg1 = /\w/; reg1.test('a');//true)exec(str):使用正则表达式模式对字符串执行搜索,并将更新全局RegExp对象的属性以反映匹配结果。如果没有匹配的文本则返回null,否则返回一个结果数组:index 声明匹配文本的第一个字符的位置,input 存放呗检索的字符串string