Ali*_*Ali 4 javascript regex jquery
我有HTML标签的简单文本和引号中的一些文本我想在引号内的文本上添加span.例如:
<p>A quick "brown" fox "jumps" over <a href="www.gamescottage.com">the</a> lazy dog.</p>
Run Code Online (Sandbox Code Playgroud)
我想要将此行更改为以下内容:
<p>A quick "<span>brown</span>" fox "<span>jumps</span>" over <a href="www.gamescottage.com">the</a> lazy dog.</p>
Run Code Online (Sandbox Code Playgroud)
我正在使用此代码执行此操作:
<script>
$('document').ready(function (){
var text = $('p').html();
text = text.replace(/"(.*?)"/g, '"<span class="quote">$1</span>"');
$('p').html(text);
});
</script>
Run Code Online (Sandbox Code Playgroud)
但它取代了HTML锚标记的引用以及任何解决方案?简而言之,我只想添加span内部引号,忽略HTML标记的引号.
JavaScript已经为你构建了一个内置的DOM解析器 - 而不是试图用正则表达式来解析HTML本身很困难且边缘不可能 - 你可以使用DOM为你带来的内置功能.在你的情况下,我将使用jQuery演示它,但非jQuery解决方案同样简单:
$("p"). // all p tags
contents(). // select the actual contents of the tags
filter(function(i,el){ return el.nodeType === 3; }). // only the text nodes
each(function(i, el){
var $el = $(el); // take the text node as a jQuery element
var replaced = $el.text().replace(/"(.*?)"/g,'<span>"$1"</span>') // wrap
$el.replaceWith(replaced); // and replace
});
Run Code Online (Sandbox Code Playgroud)