正则表达式(语法)

一、js正则表达式——REGEXP对象

(一)实例化
1.字面量法

var reg = /\dis\d/g;

2.构造函数法

var reg = new RegExp('\dis\d','g');

(二)修饰符

-g: global 全文搜索,不添加,搜索到第一个匹配停止
-i: ignore case 忽略大小写
-m: multiple lines 多行搜索

(三)元字符

. * + ? $ ^ / \ () {} []

1.字符类
用[]来构建一个简单的类,泛指。

如:[abc] 将a或b或c的内容,即指含有a或b或c的一类字符串

2.字符类取反
  • 用元字符^创建,反向类/负向类
  • 反向类指不属于某类的内容
  • 表达式[^abc]指不是字符a或b或c的内容(除去a、b、c)
3.范围类
类似于[a-z],用-来连接两个字符,[]来指定类
  • [a-z] 表示从a都z得任意一个字符
  • [a-z]是个闭区间,包含a和z本身
  • 在[]组成的类内部是可以连着写的,如[a-zA-Z](小写字符或者大写字符) 、[0-9-](数字或者-)

'2018-06-13'.replace(/[0-9-]/g,'X');
'XXXXXXXXXX'

4.预定义类
  • ‘.’ 等价于 [^\r\n],指 除了回车和换行符之外的所有字符
  • '\d' 等价于[0-9],指 数字字符
  • ‘\D’ 等价于[^0-9],指 非数字字符
  • ‘\s’ 等价于[\t\n\xOB\f\r],指 空白字符
  • ‘\S’ 等价于[^\t\n\xOB\f\r],指 非空白字符
  • ‘\w’ 等价于[a-zA-Z_0-9],指 单词字符(字母或数字或下划线)
  • ‘\W’ 等价于[^a-zA-Z_0-9],指 非单词字符
5.边界字符
  • ‘^’ 含义:以XXX开头
  • ‘&’ 含义:以XXX结束
  • ‘\b’ 含义:单词边界
  • ‘\B’ 含义:非单词边界
6.量词
量词作用于其前面的单词或分组
  • ‘?’ 含义:出现0次或1次(最多出现1次)
  • ‘+’ 含义:出现1次或多次(至少出现1次)
  • ‘*’ 含义:出现0次或多次(任意次)
  • ‘{n}’ 含义:出现n次
  • ‘{n,m}’ 含义:出现n到m次
  • ‘{n,}’ 含义:至少出现n次
  • ‘{0,n}’ 含义:出现0到n次(最多n次)
7.贪婪模式(默认)
如:\d{3,6}   含义: 匹配3-6个数字,贪婪模式下会尽可能多滴匹配6次

'12345678'.replace(/\d{3,6}/g,'X');
'X78'

8.非贪婪模式
  • 让正则表达式尽可能少的匹配,即一旦成功匹配不再继续尝试
  • 只需在量词后面加上?即可

'12345678'.match(/\d{3,6}/g);
['123','456']

'123456789'.match(/\d{3,6}/g);
['123','456','789']

9.分组
使用()来分组,使用量词作用于分组

/zhang{3}/ 指:"zhan"+3个“n”

/(zhang){3}/ 指:3个"zhang"

"a1b2c3d4".replace(/([a-z]\d){3}/g,"X");
"Xd4"

10.或
使用|来达到或的效果

"zhangasdf".replace(/zhang|asdf/g,"X");
"XX"

"zhangsdfzhanasdf".replace(/zhan(g|a)sdf/g,"X");
"XX"

11.反向引用

如:将2018-06-13转换成6/13/2018

"2018-06-13".replace(/(\d{4})-(\d{2})-(\d{2})/g,"32指捕获分组2,1指捕获分组1

12.忽略分组
不希望捕获分组,只需在分组内加上?:即可

"/(?:zhang).(ok)/"

13.前瞻
  • 正则表达式从文本头部向尾部开始解析,文本尾部方向,为“前”
  • 前瞻指正则表达式匹配到规则时,向前(继续往文本尾部)检查是否符合断言,后顾/后瞻方向相反
  • JavaScript没有后瞻
  • 符合:“肯定/正向”匹配;不符合:“否定/负向”匹配

\w(?:\d)匹配一个单词其后面跟着数字
"a23".replace(/\w(?:\d)/g,"X")
"X2
3"

"a2345v8".replace(/\w(?:\d)/g,"X")
"X2
XX5X8"

"a2*345v8".replace(/\w(?!\d)/g,"X")
"aX34Xv8"

14. 对象属性
  • global:全文搜索,默认false
  • ignore case:忽略大小写,默认false
  • multiple: 多行搜索,默认false
    -lastIndex:指当前表达式匹配内容的最后一个字符的下一个位置
  • source: 正则表达式的文本字符串
14. 对象的方法
test()  exec()  search()  match()  split()  replace()

你可能感兴趣的:(正则表达式(语法))