2

所以我基本上想在包含文本区域的 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这个 textarea 中的所有新行(用 a <br/>),但想忽略 中的文本<b>(并且只是<b>标签,而不仅仅是任何 HTML 标签),我该怎么做呢?

我在想某种正则表达式可以工作,但不确定如何将规则放在一起......虽然通过正则表达式解析 html 并不理想 - 如果它有效,那么它解决了我的问题。我还认为某种 jquery 可以在两者之间进行杂耍,.text()并且.html()可以与一些人一起工作:not().filter()也许但我什至不知道从哪里开始……

非常感谢

4

1 回答 1

2

我并不是说这是正确或最好的方法,但这里有一个正则表达式可以满足您的要求。

如果字符串 a中没有出现在 a之前,则以下内容将替换 any \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/>' );
});
于 2013-02-28T12:19:09.873 回答