在javascript中替换换行符不起作用:(

时间:2010-01-10 15:00:30

标签: javascript regex

嘿那里,我正在尝试更换

<blockquote>...</blockquote>

>> ...

这是我的代码:

var testhtml = 'sdkjhfbs <blockquote>skldfjsfkjghbs\n sdjkfhb ksdbhv isl\n kdjbhdfgkj bs</blockquote>kdjfgnkdfj';
alert(blockquoteConvert(testhtml));

function blockquoteConvert(html) {
    return '>>' + html.
        replace(/<blockquote>([^]+)<\/blockquote>/gi,"$1").
        replace('/\n/','\n>> ');
}

但它找不到Linebreaks。 (我检查了indexOf('\ n'))。

我该怎么做?

6 个答案:

答案 0 :(得分:7)

尝试不带引号:

replace(/\n/g,'\n>> ')

现在分隔符是文字正则表达式声明语法的一部分,而不是模式本身的一部分。

答案 1 :(得分:0)

使用双反斜杠\\n应该会有所帮助。

答案 2 :(得分:0)

您需要进行全局替换,否则替换将仅匹配第一个换行符。此外,您不能在正则表达式周围使用引号,因为斜杠将成为搜索字符串的一部分,因此请尝试以下操作:

replace(/\n/g,'\n>> ')

答案 3 :(得分:0)

你很接近,但你的语法不一致:

function blockquoteConvert(html) {
    return '>> ' + html.
        replace(/<blockquote>([^]+)<\/blockquote>/gi,"$1").
        replace(/\n/g,'\n>> ');
}

答案 4 :(得分:0)

试试这个

var testhtml = 'sdkjhfbs <blockquote>skldfjsfkjghbs\n sdjkfhb ksdbhv isl\n kdjbhdfgkj bs</blockquote>kdjfgnkdfj';
alert(blockquoteConvert(testhtml));

function blockquoteConvert(id) {
car text = document.getElementById(id).value;
text = text.replace(/\n\r?/g, '>>');
}


Or use jquery 
$('#caption').html($('#caption').text().replace(/\n\r?/g, '>>'));

答案 5 :(得分:0)

好的,现在我很困惑。请试试这个:

var testhtml = 'sdkjhfbs <blockquote>skldfjsfkjghbs\n sdjkfhb ksdbhv isl\n kdjbhdfgkj bs</blockquote>kdjfgnkdfj';
alert(convertLineBreaks(testhtml));
alert(blockquoteConvert(testhtml));

function blockquoteConvert(html) {
    return html
        .replace(/<blockquote>([^]+)<\/blockquote>/gi,convertLineBreaks("$1"));
}

function convertLineBreaks(text) {
    return '>>' + text.replace(/\n/g,'\n>> ');
}

在更换blockquote后,我的换行符似乎丢失了......?