用正则表达式给 html 标签的属性值添加引号

现在,我们有如下的一个字符串:

var str =  "<a href = xxx name=aaa target=_blank title='asdfasf' onclick = alert('blueidea')>";

注意到,里面有些属性没有打引号,那我们怎么做呢?

首先,使用正则表达式匹配标签中的属性值(包括了有引号的、没引号的)

var reg = /(?<==)(\s*)([^=]+)?(?=(\s+|>))/g;

其中,(?<==)是反向预查,表示匹配的前边必须是等号。

(?=(\s+|>))是正向预查,表示匹配的后边必须是若干空白字符或者是右尖角号(考虑到最后一个属性值)。

(\s*)是匹配等号后边的空白字符、([^=]+)? 匹配的是属性值(非贪婪的,这很重要)。

 

之后,我们使用 str.replace 来添加引号。

这里,我们分两种情况:

情况一:有引号的属性。
情况二:没引号的属性。

console.log(str.replace(reg,function($, $1, $2) {
	if($2[0] == '\'' || $2[0] == '\"') {
		return $2;
	} else {
		return "\"" + $2 + "\"";
	}
})); 

对情况一,直接返回。对情况二,它返回一个左右加引号。

下面是执行的结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值