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

标签 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 
    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/

相关文章:

javascript - 从底部开始然后向上滚动

带有 jQ​​uery 的 Javascript 模块模式

html - 播放 YouTube 视频时暂停 Bootstrap 轮播

javascript - AngularJS 简单 Controller 不工作

javascript - svg 矩形不同边上的标签

javascript - iframe 的背景图片

javascript - 如果 html 内联元素内部有 block 元素,如何使用 javascript 拆分它

javascript - 使用 javascript 模数来更新图 block 位置的行

javascript - 创建一个新的 DOM 元素,其中包含多个元素并附加到 DOM

html - CSS 中的定位和边距