正则表示式 = 模式 + 修饰符
修饰符
- i 不区分大小写
- m 多行匹配
- g 全局匹配,即匹配到第一个结果后不会停止,而是继续向后查找匹配
- u Unicode模式,将模式视为Unicode序列点的序列
- s dotAll模式,匹配任何字符,包括\n
正则表达式创建方式
两种模式的区别:字面量形式提供的是编译模式,Regexp构造函数模式提供的是运行时模式,可以在其中使用变量。
一、知识点
二、符号概念
1、元字符
- . 匹配任意单个字符,行结束符除外
- \d匹配任意阿拉伯数字,等价于[0-9]
- \D不匹配任意阿拉伯数字,等价于[^0-9]
- +表示一个或多个
- \w匹配任意来自基础拉丁字母表中的字母、数字、下划线,等价于[a-zA-Z0-9]
- \W不匹配任意来自基础拉丁字母表中的字母、数字、下划线,等价于[^a-zA-Z0-9]
- \s匹配一个空白符
- \S匹配非空白符
- \n换行
- \r回车
- \t水平制表符
- \v垂直制表符
- \f匹配一个换页符
- [\b]匹配一个退格符
- \0 匹配一个NUL符,不要在此后面根小数点
- \转义符,是具有特殊含义的字符直接输出
- \xhh匹配编码为hh(两个十六进制数)的字符
- \uhhhh匹配unicode值为hhhh(四个十六进制数)的字符
2、集合
- [abc]匹配集合中的任意一个字符
- [^abc]不匹配集合中任意一个字符(也叫反义字符组)
- [^]匹配任意字符,比.更全面,它可以匹配\n等
2、边界
- ^匹配字符串开始
- $匹配字符串结束
- \b单词分隔符
- \B非单词分隔符
3、数量
- x+ 一个或多个
- x* 零个或多个
- x+? 最小匹配
- x*?最小匹配
- x?零个或一个
- x|y 匹配x或者y
- x{n} 精确匹配n个
- x{n,} 精确匹配最少n个
- x{n,m} 精确匹配最少n个,最多m个
4、组
- (x)匹配并且捕获x,这被称为捕获括号
- \n反向引用,n是一个正数,指向正则表达式中第n个匹配的字符串
- (?:x) 匹配x但不会捕获,用于匹配多个字符的字符串,效率比捕获模式高
5、断言
- x(?=y) 只匹配后面紧跟y的x,不包含y
- x(?!y) 只匹配后面没有y的x,不包含y
- (?<=y)x 只匹配前面是y的x, 不包含y
- (?<!y)x 只匹配前面没有y的x,不包含y
6、实例属性
- source 正则对象的源模式文本
- lastIndex 下次开始匹配的字符串索引位置
- global 是否开启全局匹配
- multiline 是否开启多行匹配
- ignoreCase 是否开启忽略大小写
- sticky 是否开启粘滞模式
7、实例方法
- exec() 在目标字符串中执行一次匹配操作
- test() 测试当前正则是否能匹配目标字符串
- toSource()
- toString()返回字面量字符串
参考文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp
JavaScript正则表达式
原文:https://www.cnblogs.com/chunshan-blog/p/12292410.html