正则表达式总结

来源:互联网 发布:php query 编辑:程序博客网 时间:2024/06/05 23:07

RegExp (regular expression) 正则表达式

语法

  1. /pattern/flags 字面量
  2. new RegExp(pattern [, flags]) 构造函数
  3. RegExp(pattern [, flags]) 工厂符号

flags

g 全局匹配
i 忽略大小写
m 匹配多行 将开始和结束符 (^ $) 视为在多行上工作,分别匹配每一行的开始和结束
u Unicode
y 粘性匹配,仅匹配目标字符串中此正则表达式的lastIndex属性指示的索引(并且不尝试从任何后续的索引匹配)

字符类别

. 单个字符 行结束符除外 \n \r \u2028 \u2029
\d 任意数字 [0-9]
\D 非阿拉伯数字 [^0-9]
\w 字母数字下划线 [A-Za-z0-9_]
\W 非字母数字下划线 [^A-Za-z0-9_]
\s 一个空白符 包括空格、制表符、换页符
\S 非空白符
\t 水平制表符 tab
\r 回车符 carriage return
\n 换行符 linefeed
\v 垂直制表符 vertical tab
\f 换页符 form-feed
[\b] 退格符 backspace
\0 匹配一个NUL字符
\cX X是 A-Z 的一个字母,匹配字符串中的一个控制字符 /\cM/ 匹配control-M
\xhh 匹配编码为 hh (两个十六禁止数字) 的字符
\uhhhh 匹配Unicode 值为 hhhh (四个十六进制数字) 的字符
\ 使普通字符具有特殊作用 使特殊字符不具有特殊作用

字符集合

[xyz] 一个字符集合,也叫字符组。匹配集合中的任意一个字符 可以用连字符”-“制定一个范围 [a-d]
[^xyz] 一个反义或补充字符集

边界 Boundaries

^ 输入开始
$ 输入结尾
\b 匹配零宽单词边界 一个字母和一个空格之间
\B 匹配零宽非单词边界 两个字母自建或者两个空格之间

分组 与 反向引用

(x) 匹配x并且捕获匹配项
\n n是一个正整数 一个反向引用 (back reference)
(?:x) 匹配 x 不会捕获匹配项

数量词(Quantifiers)

x* 匹配前面的模式x 0或多次
x+ 匹配前面的模式x i51或多次
x? 匹配前面的模式x 0或1次; 如果在数量词 * + ? {} 任意一个后面紧跟?,会使数量词变为非贪婪即匹配数量最小化,泛指,默认情况下是贪婪的
x|y 匹配 x 或 y
x{n} 前面的模式x 连续出现n 次时匹配
x{n,} 前面的模式x 至少连续出现n 次时匹配
x{n,m} 前面的模式x 至少连续出现n次 至多出现m 次时匹配

断言 assertions

x(?=y)只有当x 后面紧跟着 y 时才匹配 x (匹配结果不包括y)
x(?!y)只有当x 后面不是紧跟着 y 时才匹配 x

属性

RegExp.global 是否开启全局匹配
RegExp.ignoreCase 是否忽略大小写
RegExp.lastIndex 下次匹配开始的字符串索引位置
RegExp.multiline 是否开启多行匹配,影响^ $ 的行为
RegExp.source 正则对象的原模式文本
RegExp.sticky 时候开启粘滞匹配

支持正则表达式的String对象的方法

  1. search
    search 不执行全局匹配,忽略g 和 lastIndex 属性 从字符串的开始检索 返回第一个匹配的位置,没有找到匹配的字符串返回-1
    search 对大小写敏感 加上 i 后可忽略大小写
  2. match
    可以进行全局匹配 找不到返回null
  3. replace

  4. split

原创粉丝点击