RegExp对象与模拟模板字符串的实现

RegExp对象与模拟模板字符串的实现

RegExp对象

RegExp 对象即正则表达式对象,用于将文本与一个模式匹配。

创建RegExp对象
// 第二个参数为修饰符 
// 'g': 全局搜索,可以有多个结果,每一次开始搜索的位置都是上一次匹配的后一个位置
// 'i': 匹配时不区分大小写
// 'm':多行匹配
// 第二个参数存在时,new RegExp() 不再抛出 TypeError g
var re1 = /\w+/
var re2 = new RegExp('\\w+', 'g') 
var re3 = new RegExp(/\w+/, 'g')
RegExp对象的属性
flags:返回一个已有修饰符的字符串
var re = new RegExp(/sad/, 'gi')
console.log(re.flags)  // gi
lastIndex:表示匹配的开始位置,可读可写

‘r’ ‘m’ 模式下一直为0, 'g’模式有效

var re = new RegExp(/sad/, 'g')
var s = 'sad'
console.log(re.test(s))    // true
console.log(re.lastIndex)  // 3
console.log(re.test(s))    // false
RegExp对象的方法
test():返回一个布尔值,表示能否匹配参数字符串。
exec():匹配成功返回一个数组,否则返回null。
var re = new RegExp(/sad/, 'i')
var s = 'sadd'
console.log(re.exec(s))  // [ 'sad', index: 0, input: 'sadd', groups: undefined ]

模拟模板字符串的实现

let data = { 
    name: '小王',
    class: '软件一班'
  }
let str = '${name}是${class}的学生'
function template(str, data) {
    Object.keys(data).forEach(key => {
        str = str.replace(new RegExp(/\$\{\w+\}/), data[key])
    })
    return str
}
console.log(template(str, data))  // 小王是软件一班的学生
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值