(一)正则表达式的标识符
标识符是写在正则表达式的外面,用来修饰整个正则表达式
i:忽略大小写
g: 全局
(二)两种创建正则表达式的区别
(1)字面量创建
var reg = /abcd/ig
(2)构造函数创建
var reg = new RegExp('abcd', 'ig')
(三)小练习
1. 匹配字符串中的三位数:
(1)使用 exec ,注意 exec 调用一次匹配一次
var reg = /\d{3}/g
console.log(reg.exec('dfg345retrt456rgfg678')[0]) // 345
console.log(reg.exec('dfg345retrt456rgfg678')[0]) // 456
console.log(reg.exec('dfg345retrt456rgfg678')[0]) // 678
封装方法取值:
var reg = /\d{3}/g
function getResult (reg, str) {
var result = []
var startResult = reg.exec(str)
while (startResult) {
result.push(startResult[0])
startResult = reg.exec(str)
}
return result
}
console.log(getResult(reg, 'dfg345retrt456rgfg678')) // ["345", "456", "678"]
(2)match匹配:
如果没有全局 g 的时候,匹配第一个符合条件的,返回的格式与 exec 返回一样,需要 【0】
如果有全局匹配 g 的时候,返回的格式是符合的数组
// 匹配字符串中的三位数
var reg = /\d{3}/g
console.log('dfg345retrt456rgfg678'.match(reg)) // ["345", "456", "678"]
2. 全部替换字符串中的三位数为 ***
(1)replace :替换
var reg = /\d{3}/g
console.log('dfg345retrt456rgfg678'.replace(reg, '***')) // dfg***retrt***rgfg***
3. search 方法:
如果找到一个匹配,search方法将返回一个整数值,指明这个匹配距离字符串开始的索引位置。
如果没有找到匹配,则返回-1
var reg = /\d{3}/g
console.log('dfg345retrt456rgfg678'.search(reg)) // 3