正则表达式手记

修饰符 (g,i,m)
  1. g : 全文进行匹配 (不加则匹配至第一个即停止)

  2. i : 忽略大小写(默认大小写敏感)

  3. m : 多行搜索

“He is a boy,Is he?”.replace('/\bis\b/gi','0')
=>  "He 0 a boy,0 he?"
元字符(.,[],(),$,^,|,,)
  1. [] 字符类,满足其中一个即可
 [abc] 字符类,(表或,有其中一个即可(a,b,c))
 [^abc] 字符类取反,none of  (a,b,c) 不包含组合里任意一个
 [a-z] 从a至z的任意字符
 [0-9] 从0至9的任意数字
 [a-zA-Z] 从a至z或A至Z的任意字符
  1. . 除了回车符和换行符之外的所有符号
  2. \d 数字字符 ([0-9])
  3. \D 非数字字符([^0-9])
  4. \s 空白符
  5. \S 非空白符
  6. \w 单词字符 (字母数字下划线 [a-zA-Z_0-9])
  7. \W 非单词字符
  8. () 分组
2020-05-06 替换为05-06-2020
var reg = /^(\d{4})[/-](\d{2})[/-](\d{2})$/g
"2020-05-06".replace(reg,'$2-$3-$1')
分组:
- 重复单词 
"broBroBroADC".replace(/(bro){3}/gi,'X') 	=>	"XADC"   (broBroBro)
- 分组匹配
"bro1fr2g1h3gg".replace(/([a-z]\d){3}/gi,'X')	=>	"bro1fXgg" (r2g1h3)
- 或
"broBroBroADC".replace(/Bro|A/g,'X')		=>	"broXXXDC" (Bro Bro A)
- 忽略分组,不想捕获时再分组前加(?:....)
(?:sister).(ok) 	=>	$1 = ok
边界(^,$,\b,\B)
  1. ^ 以XXX开始(写前)
  2. $ 以XXX结束 (写后)
  3. \b 单词边界
  4. \B 非单词边界
量词(?,+,*,{})
  1. “?” 0次或1次 (最多出现1次)
  2. “+” 1次或多次 (最少出现1次)
  3. “*” 0次或n次 (任意次)
  4. {n} n次
  5. {n,m} n次到m次
  6. {n,} 至少出现n次
  7. {0,m} 最多出现m次
贪婪模式 (匹配最多次)
"12345678".replace(/\d{3,6}/g,'X')	=> "X78" (123456)
"123456789".replace(/\d{3,6}/g,'X')	=> "XX"  (123456,789)
非贪婪模式(匹配最少次,量词后加?)
"12345678912".replace(/\d{3,6}?/g,'X')	=>	"XXX12" (123 456 789)
前瞻

1.正向前瞻 (exp(?=assert))
2.负向前瞻 (exp(?!assert))

var reg = /\w(?=\d)/g  (字符后面是数字)
"a2*3".replace(reg,'X')		=>	"X2*3"
"a2*34v8".replace(reg,'X')	=>	"X2*X4X8"

"a2*34vv".replace(/\w(?!\d)/g,'X')	=>	"aX*3XXX"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值