所以我基本上想在文本区域的包含html中操作特定标签(仅使用javascript)而不触及其余部分,例如:
<textarea>
some stuff here
random new line
<i>this can be treated as
per other text and manipulated</i>
<b>
BUT something
in bold
should be ignored / overlooked</b>
and some
other stuff,
right here
</textarea>
假设我想替换所有新行 \n
在此文本区域中(带有 <br/>
),但想忽略 <b>
中的文本(只是 <b>
标签,而不仅仅是任何 HTML 标签),我该怎么做?
我在想某种正则表达式可以工作,但不确定如何将规则组合在一起......尽管通过正则表达式解析 html 并不理想 - 如果它有效,那么它就解决了我的问题。我还想到了 .text()
之间的某种 jquery 杂耍和.html()
可以与一些:not()
一起使用和.filter()
也许吧,但我真的不知道从哪里开始……
非常感谢
最佳答案
我并不是说这是正确或最好的方法,但这里有一个正则表达式可以满足您的要求。
以下内容将替换任何 \n
与 <br/>
假设在字符串中向前看 </b>
不会出现在 <b>
之前- 这将阻止 <b></b>
内的任何替换.
text = text.replace( /\n(?!((?!<b>)[\s\S])*<\/b>)/g , '<br/>' );
示例
$('textarea').val( function ( index, old ) {
return old.replace( /\n(?!((?!<b>)[\s\S])*<\/b>)/g , '<br/>' );
});
关于javascript - 将规则应用于文本,但不在 div 或元素内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15133937/