正则表达式学习总结

一、初识正则表达式

1、正则表达式用途

  1. 校验;
  2. 查找匹配;
  3. 替换;
  4. 拿到想要的字符串后执行其他想完成的字符串操作。

2、创建正则表达式

描述字符串规则的表达式

  1. 直接量创建
    /pattern/attrs
  2. 对象创建
    new RegExp(pattern, attrs)

3、使用正则表达式

  • RegExp.test(string)
  • RegExp.exec(string)
  • String.search(RegExp)
  • String.match(RegExp)
  • String.replace(RegExp/str,replacement)

二、正则表达式语法

1、直接量字符

  1. 字母和数字
    代表自身
  2. 非字母的字符匹配
    \o: NULL
    \t, \v: 制表符,垂直制表符
    \n, \r: 换行符,回车符
    \f: 换页符
    \xnn, \uxxxx: 十六进制数指定的拉丁/Unicode字符(不常用)
    \cX: 控制字符^X(不常用)

2、字符类

  • [...], [^...] —— 将直接量直接放在方括号内,表示在/不在[]内的任意字符,eg: /[0-9] [0-9]/
  • . —— 除换行符和其他Unicode行终止符之外的任意字符
  • \w, \W —— [a-zA-Z0-9], [^a-zA-Z0-9]
  • \s, \S —— 任何/非任何Unicode空白符
  • \d, \D —— [0-9], [^0-9]
  • [\b] —— 退格直接量(不常用)

3、重复

  • {n,m} —— 匹配前一项至少n次,最多m次,eg: /abc{2,4}/
  • {n,} —— 匹配前一项至少n次,eg: /abc{2,}/
  • {n} —— 匹配前一项n次,eg: /abc{2}/
  • ? —— 匹配前一项0次或1次,{0,1},eg: /abc?/
  • + —— 匹配前一项至少1次,{1,},eg: /abc+/
  • * —— 匹配前一项0次或多次,{0,},eg: /abc*/
  • 贪婪与非贪婪(?) —— 尽可能多的匹配/只匹配一个,eg: [a+?],表示匹配一个a而不用将a全部匹配到

4、选择

  • | —— 选择,或,eg: /[a-z]|\d/,表示匹配小写字母或者数字

5、分组、捕获

保存匹配到的表达式,以备使用

  • (...) —— 分组并捕获,eg: [abc+], [(abc)+],分别表示捕获ab和至少一个c,至少一组abc
  • (?:...) —— 分组但不捕获,eg: /([1-9] [0-9])+.(?:00)/,后面的不会被捕获
  • \分组序号 —— 表示要使用的分组

6、锚点

指定匹配位置

  • ^, $ —— 匹配字符串开头和结尾,eg: /^1\d{10}$/
  • \b, \B —— 匹配单词/非单词的边界,eg: /\bscript\b/,script前后不能跟随其他字符
  • (?=p), (?!p) —— 零宽正/负向先行断言,eg: /?=script/, /?!script/

7、修饰符

高级匹配模式的规则,既可以单个使用,也可以多个组合使用

  1. i —— 不区分大小写,eg:/(abc)+/i
  2. g —— 全局匹配,eg:/(abc)+/g
  3. m —— 多行匹配,eg:/(abc)+/m

三、字符串上的方法

  1. String.prototype.match(regexp)
    功能:检索字符串中能够匹配正则表达式的匹配项
    参数:regexp(正则表达式对象)
    返回值:返回匹配结果的数组
  2. String.prototype.search(regexp)
    功能:执行正则表达式及string之间的搜索匹配
    参数:regexp(正则表达式对象)
    返回值:第一个匹配的子串的起始位置或-1
    注意:不支持全局模式g
  3. String.prototype.replace(regexp|substr,replacement)
    功能:匹配字符串并用新的替换值替换掉匹配到的子串
    返回值:被部分或者全部匹配替换的新字符串
    参数:
    1. regexp|substr —— 正则表达式对象或者要被替换掉的子串
    2. replacement —— newSubStr或者创建新子串的函数

四、RegExp对象上的方法

  1. RegExp.prototype.test(str)
    功能:判定正则表达式与指定的字符串是否匹配
    参数:str —— 用来匹配的字符串
    返回值:true/false
  2. RegExp.prototype.exec(str)
    功能:在指定的字符串中执行搜索匹配,得到结果数组
    参数:str —— 用来匹配的字符串
    返回值:完整的匹配数组,第一个元素是匹配的字符串,余下的元素是与分组的子表达式匹配的子串
    注意:此方法执行完会更新正则表达式对象中的属性lastIndex(指定下一次匹配的起始索引,使用全局检索时才生效)
posted @ 2019-01-03 15:05  hexiaobang  阅读(334)  评论(0编辑  收藏  举报