使用正则表达式的JavaScript修剪换行符?

使用正则表达式的JavaScript修剪换行符?,javascript,jquery,regex,line-breaks,trim,Javascript,Jquery,Regex,Line Breaks,Trim,我正在使用GoogleTranslate来翻译一个textarea的内容,并用API响应填充另一个textarea。 在我的源文本区域中,我将用换行符替换/n换行符,以如下方式发送查询: var query = $('#textarea-src').val(); var query = encodeURIComponent(query); var query = query.replace(/\n\r?/g, '<br />'); // replace new lines

我正在使用GoogleTranslate来翻译一个textarea的内容,并用API响应填充另一个textarea。 在我的源文本区域中,我将用

换行符替换
/n
换行符,以如下方式发送查询:

var query   = $('#textarea-src').val();
var query   = encodeURIComponent(query);
var query   = query.replace(/\n\r?/g, '<br />'); // replace new lines with line breaks
var query=$('#textarea src').val();
var query=encodeURIComponent(查询);
var query=query.replace(/\n\r?/g,
);//用换行符替换新行
然后我打电话给谷歌:

$.ajax({
    url: apiUrl,
    dataType: 'jsonp',
    success: function(data) { 
        var response = data.data.translations[0].translatedText;
        var response = response.replace(/ <br \/> ?/g, '\n'); // replace line breaks with new lines
        $('#textarea-trg').val(response);
    }
});
$.ajax({
url:apiUrl,
数据类型:“jsonp”,
成功:函数(数据){
var response=data.data.translations[0].translatedText;
var response=response.replace(//br\/>?/g,'\n');//用新行替换换行符
$('textareatrg').val(响应);
}
});
问题是谷歌的回应在分线处有空格。 当我询问
“hello
world”
时,法语回答是
“bonjour\u003cbr/\u003e monde”

使用我的
replace(/?/g,'\n')
regex,我可以纠正这一点,但是当我查询两个换行符之后的
“hello


world”
时,响应是
“bonjour\u003cbr/\u003e\u003cbr/\u003e monde”

如何更正此错误?

请尝试:

var query   = $('#textarea-src').val();
var query   = query.replace(/\n|\r/g, '<br\/>'); // replace new lines with line breaks
var query=$('#textarea src').val();
var query=query.replace(/\n |\r/g',);//用换行符替换新行

或者,如果可能的话,首先发送翻译到谷歌的请求,然后用
BR

替换换行符换行符。您可以在两侧选择空格:

var response = response.replace(/ ?<br \/> ?/g, '\n');
var response=response.replace(/??/g,“\n”);
另一个选项是使用
/**/g
/\s*\s*/g

为了清楚起见,让我们使用下划线而不是空格:

如果您的文本是
“a\ubr/>\ub”
/\ubr\/>\ug
失败,因为第一个匹配占用了第二个空格(导致
“a\n
\u b”
),第二个

如果没有前导空格就无法匹配。

它回避了一个问题:为什么要用

s替换换行符?@cheeken。我不确定,但对于有效的XHTML,所有标记都必须关闭(或自关闭)@Andrew为了澄清,我所说的“换行符”是指
\n
s。我想知道FFish是否想用

s替换
\n
s。如果问题是GET请求和无效字符,可以通过编码解决。@cheeken-这是一个很好的观点。
$.ajax
缺少
数据
参数,因此它可能在URL中被错误编码。我敢说,在将数据发送到Google之前,没有理由进行替换。你可以事后再做,避免混乱。这不是OP真正的问题。此外,
“a\n\r\b”
(总共2行),这是一个浏览器样式的新行,将转换为
“a

b”
,然后转换为
“a\n\n\b”
(3行)。在其他浏览器上应该可以使用。@FFish-没问题。不过,我会注意cheeken的评论-可能有更好的解决方案来解决您的问题。在替换查询之前,我使用了
encodeURIComponent(query)