Javascript 将规则应用于文本,但不应用于div或元素内
因此,我基本上希望在文本区域的包含html中操作一个特定的标记(仅使用javascript),而不触及其余部分,例如:Javascript 将规则应用于文本,但不应用于div或元素内,javascript,jquery,html,regex,str-replace,Javascript,Jquery,Html,Regex,Str Replace,因此,我基本上希望在文本区域的包含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
<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
(使用
),但想忽略
中的文本(以及仅
标记,而不仅仅是任何HTML标记),我将如何处理
我在想某种正则表达式可以工作,但不确定如何将规则组合起来。。。虽然通过正则表达式解析html并不理想——如果它能工作,那么它就解决了我的问题。我还认为在.text()
和.html()
之间进行某种jquery杂耍可以处理一些:not()
和。filter()
也许可以,但我真的很纠结于从哪里开始
非常感谢我并不是说这是正确的或最好的方法,但这里有一个正则表达式可以满足您的需要 以下内容将用
替换任何\n
,前提是向前看字符串a
不会出现在
之前-这将防止
中的任何替换
text=text.replace(/\n(?((!)[\s\s])*)/g,
);
范例
$('textarea').val( function ( index, old ) {
return old.replace( /\n(?!((?!<b>)[\s\S])*<\/b>)/g , '<br/>' );
});
$('textarea').val(函数(索引,旧){
返回旧的。替换(/\n(?((!)[\s\s])*)/g,
);
});
。。。“…用什么替换此…”中的所有新行\n
<代码>?用什么替换所有新行?是否应保留空的
标记?是的
,对不起<代码>标记需要保持原样。为清晰起见,已使用一些措辞更新了代码位。@Tim。将正则表达式中的
更改为,例如]*>
。
$('textarea').val( function ( index, old ) {
return old.replace( /\n(?!((?!<b>)[\s\S])*<\/b>)/g , '<br/>' );
});