- 正则表达式:
- String中的正则API:
查找: - 查找一个固定的关键词出现的位置:
var i=str.indexOf(“关键词”[,starti])
在str中从starti位置开始找下一个"关键词"的位置
如果省略starti,则默认从0位置开始向后找
返回: “关键词”第一字所处位置的下标
如果找不到,返回-1
问题: 只支持查找一个固定不变的关键词 - 用正则表达式查找一个关键词的位置:
var i=str.search(/正则/i);
在str中查找符合"正则"要求的敏感词
返回值: 关键词的位置
如果找不到,返回-1
问题: 正则默认区分大小的!
解决: 在第2个/后加后缀i,表示ignore,意为:忽略大小写
问题: 只能获得关键词的位置,不能获得关键词的内容
解决: match - match:
- 查找一个关键词的内容和位置:
var arr=str.match(/正则/i);
在str中查找符合"正则"要求的敏感词的内容和位置
返回值: 数组arr:[ “0”:“关键词”, “index”: 下标i ]
如果找不到: 返回null
问题: 只能查找第一个关键词,不能查找更多关键词 - 查找所有关键词的内容:
var arr=str.match(/正则/ig) //g global 全局/全部
返回值: 保存多个关键词内容的数组
问题: 只能找到内容,无法获得位置 - 即获得每个关键词的内容,又获得每个关键词的位置
reg.exec()
替换: 将找到的关键词替换为指定的新值
2种: - 简单替换: 将所有关键词替换为统一的新值
str=str.replace(/正则/ig,“新值”)
查找str中所有符合“正则”要求的关键词,都替换为统一的新值。
问题: 所有字符串API都无权修改原字符串,只能返回新字符串。
解决: 如果希望替换原字符串,就必须自己手动赋值回原变量中 - 高级替换: 根据每次找到的关键词不同,动态选择要替换的新值
str=str.replace(/正则/ig, function(kword){
根据kword的不同,动态生成新值
return 新值
})
查找str中所有符合“正则”要求的关键词
每找到一个关键词,就自动调用一次回调函数
每次调用回调函数时自动传入本次找到的关键词给kword
回调函数中根据每次收到kword的不同,动态返回新值给replace函数
replace函数自动将回调函数返回的新值,替换到字符串原关键词位置。
切割:
Web前端之JS高级(1)—— 正则表达式
最新推荐文章于 2024-04-21 15:42:23 发布