JS使用replace全局&忽略大小写替换CSS样式标签

阅读更多

项目要求,对ckEditor编辑器做了一个全局高亮/取消高亮指定文字的功能,主要是为了兼容了IE。

以下是取消高亮功能的实现。

 

源字段及可视化效果:

ab非

AB破洞

JS使用replace全局&忽略大小写替换CSS样式标签_第1张图片
 

 

替换后字段及可视化效果:

没的

ab非的

AB破洞的

JS使用replace全局&忽略大小写替换CSS样式标签_第2张图片
 

 

 

实现方法:

 

var keyWord = formPanel.getForm().findField('keyWord').getValue();
if(keyWord != ''){
	//获取编辑器上的的全部字符
	var ckBody = CKEDITOR.instances["appendixCont"].document.getBody();
	var allText = ckBody.getHtml()
	//先把BACKGROUND-COLOR: rgb(255,155,0)替换为空
	//第一次替换后剩余的样式即为***
	allText = allText.replace(/BACKGROUND-COLOR:\s*rgb\(255,155,0\)/ig, "");
	var regText = '' + keyWord + '';
	var regS = new RegExp(regText, "gi");
	//再替换剩余的字段
	allText = allText.replace(regS, keyWord);
	//重新把替换后的字符写入编辑器
	ckBody.setHtml(allText, true);
}

 

备注:

 

new RegExp(patternattributes);参数

参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

返回值

一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。

如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当pattern 是正则表达式时,它只返回 pattern,而不再创建一个新的 RegExp 对象。

抛出

SyntaxError - 如果 pattern 不是合法的正则表达式,或 attributes 含有 "g"、"i" 和 "m" 之外的字符,抛出该异常。

TypeError - 如果 pattern 是 RegExp 对象,但没有省略 attributes 参数,抛出该异常。

 

  • JS使用replace全局&忽略大小写替换CSS样式标签_第3张图片
  • 大小: 20 KB
  • JS使用replace全局&忽略大小写替换CSS样式标签_第4张图片
  • 大小: 20 KB
  • 查看图片附件

你可能感兴趣的:(javascript,replace,正则表达式,span,替换)