Javascript正则表达式学习总结

285 查看

在web开发中,正则表达式是经常会用到的,需要系统性的学习一下。
常用于:

  • 表单(邮箱/手机号)验证
  • 字符串操作
  • 编辑器批量替换
    图形化在线工具: https://regexper.com/
    以下是在慕课网《JavaScript正则表达式》课程的总结

? 0次或1次
+ 大于等于1次
* 任意次
{n} 循环n次
{n,m} 循环n到m次
{n,} 至少出现n次
[/-] /或者-

\d [0-9]数字
\D [^0-9]非数字
\s [\t\n\x0B\f\r]空白符
\w [a-zA-Z_0-9]单词字符(字幕数字下划线)
\b 单词边界,比如\bapple\b
. 任意字符
^ 开始
$ 结束
在替换时,()中的内容为$1,$2
g 匹配所有字符,如不加则匹配第一个
i 忽略大小写
m 多行搜索
[^123] not 123
[a-zA-Z] a to z A to Z

字面量
var reg = /\bis\b/g
构造函数
var reg = new RegExp(`\\bis\\b`, `g`)

replace()

'a1b2c3d4'.replace(/[abc]/g,'X')
"X1X2X3d4"

'a1b2c3d4'.replace(/[^abc]/g,'X')
"aXbXcXXX"

反向引用
'2015-12-25'.replace(/(\d{4})-(\d{2})-(\d{2})/g, '$2/$3/$1')
"12/25/2015"

search()

'a1b2c3d1'.search(2)
3 //返回下标

match()

var reg = /\d(\w)\d/
var ts = '1a2b3c4d'
var ret = ts.match(reg)
console.log(ret)
VM344:1 ["1a2", "a", index: 0, input: "1a2b3c4d"]

var reg2 = /\d(\w)\d/g
var ret = ts.match(reg2)
console.log(ret)
["1a2", "3c4"] //全部匹配

split()

'a,b,c,d'.split(',')
["a", "b", "c", "d"] //以逗号分隔

'a1b2c3d4e'.split(/\d/g)
["a", "b", "c", "d", "e"]

replace()

'a1b1c1'.replace(/1/g,2)
"a2b2c2"

'a1b2c3d4'.replace(/\d/g, function(match,index,origin){
console.log(index);
return parseInt(match) + 1
})
VM553:2 1
VM553:2 3
VM553:2 5
VM553:2 7
"a2b3c4d5"

'a1b2c3d4e5'.replace(/(\d)(\w)(\d)/g, function(match,group1,group2,group3,index,origin){
console.log(match);
return group1 + group3
})
VM557:2 1b2
VM557:2 3d4
"a12c34e5"