RegExp 的使用

正则表达式


//用法
1. /\d/g
2. new RegExp('/\d/','g')

//修饰符
g,i,m

//元字符
1.元字符是在正则表达式中有特殊含义的非字母字符
. * + ? $ ^ | \ () {} []
\t,\v,\n,\r,\0,\f,\cX

//字符类
1.元字符[]来构建一个简单的类
2.元字符^创建反向类
[abc] , [^abc]

//范围类
1.[a-z],[1-9]

//预定义类
.  [^\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]

//边界
^ $ \b \B

"
@23
@45
@6
".replace(/^@\d/gm,'X')

//量词
? 零次或一次
+ 一次或多次
* 零次或多次
{n} 出现n次
{n,m} 出现m到n次
{n,} 至少出现n次

//贪婪模式
'12345678'.replace(/\d{3,6}/g,'X')
//匹配最大次

//非贪婪模式
在量词后面加?
'12345678'。replace(/\d{3,6}?/g,'X')
//匹配最少次


//分组
()可以达到分组的功能,使量词作用于分组

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

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

//前瞻
正向前瞻exp(?=assert)
负向前瞻exp(?!assert)

'a2*3'.replace(/\w(?=\d)/g,'x')

//对象属性
//.test()
var reg2 = /\w/g
reg2.test('ab')
reg2.lastIndex 从上一次的记录开始匹配

//.exec()
// 没有加g的调用每次从第一次开始搜素,否则从上一次,返回一个结果数组[匹配项,匹配子项]
var reg3 = /\d(\w)\d/;
var ts = '1a2b3c4d5e'
var ret = reg3.exec(ts)

console.log(reg3.lastIndex + 
'\t' + ret.index + '\t' + ret.toStirng())


//string
'a1b2'.search(/1/g,'a')
var reg3 = /\d(\w)\d/;
var ts = '1a2b3c4d5e'
var ret = ts.match(reg3)

console.log(reg3.lastIndex + 
'\t' + ret.index + '\t' + ret.toStirng())

'a,b,c,d'.split(',')

'a1b1c1'.replace(//,(匹配字符串,分组,匹配项索引,原字符串)=>{
    
})
posted @ 2019-10-14 13:06  完全hi  阅读(1334)  评论(0编辑  收藏  举报