【发布时间】:2013-05-17 08:29:10
【问题描述】:
我正在尝试使用 JS 替换包含 html 标签+属性和样式的字符串中的特定字符串,同时避免读取或匹配标签的内侧(并将原始标签保留在文本中)。
例如,当关键字为“pan”时,我希望<span> this is span text </span> 变为:<span> this is s<span class="found">pan</span> text </span>
我尝试使用正则表达式与.. 到目前为止我的正则表达式:
$(this).html($(this).html().replace(new RegExp("([^<\"][a-zA-Z0-9\"'\=;:]*)(" + search + ")([a-zA-Z0-9\"'\=;:]*[^>\"])", 'ig'), "$1<span class='found'>$2</span>$3"));
这个正则表达式只有在<span class="myclass"> span text </span>这样的情况下才会失败,当搜索=“p”时,结果:
<s<span class="found">p</span>an class="myclass"> s<span class="found">p</span>an text</s<span class="found">p</span>an>
*本主题应该可以帮助任何寻求匹配并替换匹配字符串同时避免被特定字符包围的字符串被替换的人。
【问题讨论】:
标签: javascript html regex string tags