Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将规则应用于文本,但不应用于div或元素内_Javascript_Jquery_Html_Regex_Str Replace - Fatal编程技术网

Javascript 将规则应用于文本,但不应用于div或元素内

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

因此,我基本上希望在文本区域的包含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
(使用

),但想忽略
中的文本(以及仅
标记,而不仅仅是任何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/>' );
});