因此我基本上想要在textarea的包含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>
假设我想要替换此textarea中的所有新行\n
(使用<br/>
),但想要忽略<b>
中的文本(而只是<b>
}标签,而不仅仅是任何HTML标签),我该怎么做?
我在想某种正则表达式可以工作,但不确定如何将规则放在一起......虽然通过正则表达式解析html并不理想 - 如果它有效,那么它就解决了我的问题。我还认为.text()
和.html()
之间的某种jquery杂耍可能会与某些:not()
和.filter()
一起使用,但是我仍然坚持到哪里开始......
非常感谢
答案 0 :(得分:2)
我并不是说这是正确的或最好的方法,但这里有一个正则表达式可以满足你的需要。
以下内容会将所有\n
替换为<br/>
,前提是在字符串中</b>
未出现在<b>
之前 - 这将阻止<b></b>
内的任何替换{1}}。
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/>' );
});