欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  web前端

javascript-正则表达式

程序员文章站 2022-05-17 17:22:20
...
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

以上就是javascript-正则表达式的详细内容,更多请关注其它相关文章!