正则表达式知识概览

本文中用n指代具体字符

概述

核心

正则表达式是匹配模式,要么匹配字符,要么匹配位置。

组成

量词、修饰符、元字符、特殊符号和特定语言API。

基础

量词

n+     大于等于1个字符
n*     大于等于0个字符
n?     包含0个或1个字符
n{x}   包含x个字符
n{x,}  包含x个以上字符
n{x,y} 包含x到y个字符

修饰符

g 全局匹配
i 字母大小写不敏感
m 多行匹配
y 粘连匹配
s 拓展点字符(任意字符)
u 处理超范围Unicode字符

元字符

\d\D 数字/非数字
\w\W 字母/非字母
\s\S 空白/非空白
\b\B 单词/非单词边界
\xxx 查找8进制字符
\udd 查找16进制
\数字 反向引用

特殊符号

()         分组
[]         字符组
|          或
?=n/?!n    先行断言
?<=n/><!n  后行断言
^          匹配开头
$          匹配结尾

应用

位置

开头/结尾 => ^、$
单词边界  => \b、\B
断言/环视 => ?=n、?!n、?<=n、?<!n 

模糊匹配

(量词)横向模糊匹配  => n{x,y}、n{x,}、n+、n*、n?
(字符组)纵向模糊匹配 => []、\d、\D、\w、\W、\s、\S

分组/分支/引用

分组 => () 
分支 => | 
引用 => \数字 

js正则API

字符串方法

String.prototype.search    // 检索与正则表达式相匹配的值。
String.prototype.match     // 找到一个或多个正则表达式的匹配。
String.prototype.replace   // 替换与正则表达式匹配的子串。
String.prototype.split     // 把字符串分割为字符串数组。

正则方法

RegExp.prototype.compile  // 编译正则表达式。
RegExp.prototype.test     // 检索字符串中指定的值。返回 true 或 false。
RegExp.prototype.exec     // 检索字符串中指定的值。返回找到的值,并确定其位置。

应用注意点

字符串

  • 字符串的macth方法,不带g,返回标准内容;带g,返回全部匹配内容。

  • 字符串的split方法,第2个参数可以限定结果数组的长度。

  • 字符串的split方法,利用正则匹配并使用了分组时,结果数组中会包含分组字符。

  • 字符串的searchmatch方法,会把字符串自动转为正则。

  • 字符串方法带g时,不会修改reg.lastIndex,始终为0。

正则原型方法

  • exec方法,始终返回标准内容,不受是否带g的影响。

  • exec方法,每次调用只会匹配一个,可以连续匹配,匹配不到后会重置索引。

  • test方法,默认是部分匹配,如需整体匹配,需要加^和$`限定。

  • exectest方法带g时,会修改reg.lastIndex,可能不是0。

构造函数用法

  • 对于元字符和转义字符需要再多加一个斜杠\
posted @ 2022-07-08 15:36  戡玉  阅读(59)  评论(0编辑  收藏  举报