只替换具有类高亮javascript的子字符串
replace only sub string which has class highlight javascript
我有以下代码:
document.getElementById("rep").innerHTML = document.getElementById("rep").innerHTML.replace(rxp, "abc");
<div id="rep"> asd 123 asd <span class="light">123</span> asd 123 asd <span class="light">123</span> </div>
这里,rxp
是一个匹配数字的正则表达式。问题是我只想替换那些不在span
中包含的123
,而不是替换<span class="light">
中包含的123
。
您可以使用反向字符串技巧来利用负正向查找而不是负向后查找(JavaScript regex引擎不支持):
function revStr(str) {
return str.split('').reverse().join('');
}
var rxp = new RegExp("[0-9]+(?:''.[0-9]+)?(?![^>]*>'"thgil'"=ssalc''s+naps<)", "gm");
var str = '<div id="rep"> asd 123 asd <span class="light">123</span> asd 123 asd <span class="light">123</span> </div>';
var result = revStr(revStr(str).replace(rxp, revStr('abc')));
document.getElementById("res").value = result;
<input id="res"/>
您还应该使用反向替换字符串。
EDIT:如果您需要检查数字是否没有包含在任何 <span>
标记中,您可以使用更简单的正则表达式:
var rxp = new RegExp("[0-9]+(?:''.[0-9]+)?(?![^>]*>[^>]*''bnaps<)", "gm");
相关文章:
- 可变大小的JavaScript字符串如何成为基元类型
- 如何将angularjs中的javascript字符串输出为循环数组
- 如何使用gump任务将html转换为javascript字符串
- 替换变量时,JavaScript字符串replace()不起作用
- 如何替换JavaScript字符串中除字母和数字之外的所有内容(空格/符号)
- 如何从django中的url解析javascript字符串
- 拆分javascript字符串以获得所需的值
- 使用Bootstrap'在Javascript字符串中的popover插件
- 如何替换javascript字符串中的前三个连字符
- 将JavaScript字符串转换为整数
- jquery/javascript字符串中的撇号
- 正在对java中的javascript字符串进行转义
- 如何在Javascript字符串中添加vaule
- Javascript:字符串中有效的基于数组的替换
- 具有负值的Javascript字符串.slice()
- javascript字符串替换$1(如果它是某个值)
- 将子函数的JavaScript字符串转换为实际函数
- JavaScript字符串中的换行符也保存为.txt
- 将Javascript字符串var传递给HTML href标记
- JavaScript 字符串字母和数字检查