JS-03 (RegExp对象&字符串总结)

什么是RegExp对象: 专门保存一条正则表达式,并提供用正则表达式执行验证和查找功能的函数 的对象

2. 为什么: 因为正则表达式本不属于js语言,js语言默认不认识正则表达式!所以需要专门的对象来帮助js解析和使用正则表达式。

3. 何时: 只要在js中使用正则表达式,都要先创建正则表达式对象,再使用。

4. 如何:

(1). 创建正则表达式对象:

a. //创建: var reg=/正则/ig

1). 何时: 如果正则表达式是固定不变的,才可用//创建

2). 比如: 电子邮件,手机号,身份证号,车牌照

b. new创建: var reg=new RegExp("正则","ig")

1). 何时: 如果正则表达式需要在程序内动态生成,就只能用new创建!

2). 因为: //之中不能写js表达式或语句,只有""才能用js任意生成!

(2). 正则表达式对象提供的函数:

a. 验证格式:

1). var bool=正则表达式.test(要检查的字符串)

2). 原理: 用正则表达式检查指定字符串,如果字符串格式符合正则表达式要求,就返回true,否则如果字符串格式不符合正则表达式要求,就返回false

因为test()函数的返回值本来就是bool类型,所以可直接用做判断条件

3). : test()函数默认只要在字符串中找到部分内容和正则匹配,就返回true!而不是要求从头到尾必须完整匹配!

4). 解决: 只要验证格式正则中必须前加^,后加$,表示从头到尾必须完整匹配的意思!

b. 既查找每个敏感词的内容又查找每个敏感词的位置

1). var arr=正则表达式.exec(可能包含敏感词的字符串)

2). 强调: 要想exec能找所有正则后必须加g

3). 原理: 从当前位置开始查找下一个符合正则表达式要求的敏感词的位置内容

4). 返回值: exec()每次查找返回的结果和match不加g时返回的结果数组结构完全相同:

arr=[

"0":"本次敏感词的内容",

"index":"本次敏感词的位置"

]

5). vs match(): 反复调用:

i. match()的问题: 永远只能从开头位置开始找第一个敏感词。无法继续找第二个敏感词。

ii. exec()反复调用自己就会找下一个直到找不到,返回null

1. 查找敏感词:

(1). 查找一个固定的敏感词的位置:

var i=str.indexOf("敏感词",fromi)

(2). 用正则模糊查找一个敏感词的位置:

var i=str.search(/正则/i)

(3). 获得敏感词的内容:

a. 获得一个敏感词的内容位置:

var arr=str.match(/正则/i)

    b. 获得所有敏感词的内容:

var arr=str.match(/正则/ig)  //g  global  全部

(4). 获得每个敏感词的内容位置:

reg.exec()

2. 替换敏感词:

(1). 简单替换: 将所有敏感词都替换为一个统一新值

str=str.replace(/正则/ig,"新值")

(2). 高级替换: 根据敏感词的不同,动态选择不同新值替换

str=str.replace(/正则/ig, function(kw){

return 根据kw值得不同动态生成不同的新值

})

(3). 删除敏感词: 其实就是替换为""

3. 切割字符串

(1). 简单切割: 切割符是固定的

var arr=str.split("切割符")

(2). 高级切割: 切割符是不固定的,但是有规律

var arr=str.split(/正则/)

(3). 打散字符串为字符数组:

var arr=str.split("")

4. 去掉开头和结尾的空字符:

(1). 只去开头的空字符: str.trimLeft()

(2). 只去结尾的空字符: str.trimRight()

(3). 同时去掉开头和结尾的空字符: str.trim()

原文地址:https://www.cnblogs.com/codexlx/p/12463637.html