如何添加防止正则表达式解析字符串的某些部分
How do I add prevent my regex from parsing certain parts of a string?
根据这个答案,我正在使用replaceAll()
函数交换javascript(Node)应用程序中的任意字符串:
this.replaceAll = function(str1, str2, ignoreCase)
{
return this.replace(new RegExp(str1.replace(/(['/','!'''^'$'{'}'[']'(')'.'*'+'?'|'<'>'-'&])/g,"''$&"),(ignoreCase?"gi":"g")),(typeof(str2)=="string")?str2.replace(/'$/g,"$$$$"):str2);
}
我想扩展这个正则表达式,这样它就可以而不是尝试匹配一组<span>...</span>
标记内的任何。(我需要在一些字符串的部分周围添加HTML Span标记,如果模式重复[例如,字符串"Foobarbaz"中的"Foo"answers"Foobar"],我不想在Span中包装任何东西两次)
我在一个字符串上运行多个regex搜索/替换,我想确保没有任何内容被多次处理。
我的理解是,我会以某种方式需要一个[<SPAN>] ... [</SPAN>]
,但我不太确定具体细节。有什么建议吗?
我不明白你的regexp是做什么的,但一般来说,技术是这样的:
html = "replace this and this but not <span> this one </span> or <b>this</b> but this is fine"
// remove parts you don't want to be touched and place them in a buffer
tags = []
html = html.replace(/<('w+).+?<'/'1>/g, function($0) {
tags.push($0)
return '@@' + (tags.length - 1)
})
// do the actual replacement
html = html.replace(/this/g, "that")
// put preserved parts back
html = html.replace(/@@('d+)/g, function($0, $1) {
return tags[$1]
})
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- jQuery中是否内置了任何字符串格式化函数
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- ng打开空字符串
- 正则表达式在字符串中找到base64
- 如何将字符串值从php页面发送到java脚本页面
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 对id以某个字符串开头的元素进行计数
- Javascript逻辑运算符和字符串/数字
- 反向字符串比较
- 如何有效地将游戏数据存储在URL查询字符串中
- 可变大小的JavaScript字符串如何成为基元类型
- 将DOM节点值与字符串Javascript进行比较
- 如何在 Javascript 中将变量的值从字符串转换为整数
- 本地存储中的字符串到字节数组转换
- JavaScript按钮/输入/函数,字符串反转
- 从查询字符串参数推断出正确的数据类型
- 高亮显示与数组字符串一起使用时文本插件中断
- 从 jQuery 中的字符串中获取部分值