Javascript -正则表达式-如何跳过在模式中存在的字符串的搜索
Javascript - regular expression - how to skip search for a string that exists within a pattern
在下面的代码中,使用正则表达式,我们如何用":"
搜索并替换在<>中没有找到的"="'ABC=<ATTR1 TEST="11">VALUE1</ATTR1>'
这并不是regex设计的真正目的,但是…
(?<!<[^>]*)=(?![^<]*>)
与regex差不多(如果您的风格支持负前向和后向)。但是,我不相信Javascript可以,这意味着您应该使用比正则表达式引擎更具体的解析器。
如果你正在寻找一个跨浏览器的解决方案(lookbehind是一个不去)
- 我将用正则表达式将
<>
之间的所有文本存储到数组 - Do your equal/
=
replace - 最后我将恢复
<>
之间的文本
或者您可以在javascript中split().reverse()
字符串,然后使用向前看来绕过没有向后看的支持。本文还提供了一些替代的解决方案,以支持背后。
您不应该使用regex解析HTML,而应该使用解析器。
如果您只有这些类型的标签,并且文本不包含未转义的<
或>
:
var str = 'ABC=<ATTR1 TEST="11">VALUE1</ATTR1>'+"'n"
+ 'foo = bar <foo x="5 > 3 = true" y=''fo> = ''> === </foo=>';
str = str.replace(/(?:=|(<(?:[^"'<>]+|"[^"]*"|'[^']*')*>))/g, function(m,tag){
return tag ? tag : ':';
});
结果:ABC:<ATTR1 TEST="11">VALUE1</ATTR1>
foo : bar <foo x="5 > 3 = true" y='fo> = '> ::: </foo=>
示例:http://jsfiddle.net/Vz6BK/
我写这个只是为了好玩,我没有想到所有的情况,只是一个概念的证明。
相关文章:
- 用程序搜索JQuery数据表中的文本
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 检查搜索结果是否存在多次如果是,则在Javascript中只显示一个结果
- jQuery脚本,它搜索现有的查询参数并且不添加“"如果存在
- jQuery 获取搜索选择器,如果元素不存在
- 在数组中搜索数字.如果不存在,则在 Javascript 中返回较低的值
- Javascript 搜索 LocalStorage 变量是否存在
- 搜索克隆选择对象的选项值,如果存在则设置选中
- 检查数据库中是否存在搜索项—PHP不会输出任何内容,但仍会向数据库中添加项
- 如何在进行搜索时删除已经存在的数据
- 搜索字符串中是否存在一个单词
- 重定向到特定的url基于用户输入,但如果没有预定义的关键字存在搜索网站
- 当存在无效搜索时,向表中添加特定的搜索错误
- Mootools,搜索dom以查看是否存在类,我是否应该担心每页都要做多次
- Javascript -正则表达式-如何跳过在模式中存在的字符串的搜索
- 搜索数组中是否存在多个值
- 搜索字符串是否存在于类似indexOf的数组的任何值中
- Google Apps 脚本中的文件迭代器在搜索不存在的文件时返回无效参数
- 如何验证我的谷歌地图搜索文本框是否存在无效输入