Win*_*ade 384 javascript regex string
我在textarea中有一个文本,我使用.value属性读出来.
现在我想Enter从我的文本中删除所有换行符(当你按下时产生的字符),现在使用带有正则表达式的.replace,但是如何在正则表达式中指明换行?
如果那是不可能的,还有另外一种方法吗?
小智 460
如何找到换行符在操作系统编码之间有所不同.Windows会是\r\n,但Linux只是使用\n和Apple使用\r.
我在JavaScript换行符中找到了这个:
someText = someText.replace(/(\r\n|\n|\r)/gm, "");
Run Code Online (Sandbox Code Playgroud)
这应该删除所有类型的换行符.
Poi*_*ars 440
这可能是常见问题解答.总之,换行符(更好:新行)可以回车之一(CR, \r,老的Mac上),换行(LF,\n上Unix系统的Linux含)或CR其次是LF(\r\n上WINDOS).(与另一个答案相反,这与字符编码无关.)
因此,RegExp匹配所有变体的最有效的文字是
/\r?\n|\r/
Run Code Online (Sandbox Code Playgroud)
如果要匹配字符串中的所有换行符,请使用全局匹配,
/\r?\n|\r/g
Run Code Online (Sandbox Code Playgroud)
分别.然后replace按照其他几个答案中的建议继续进行.(也许你并不想删除换行符,但与其他空格替换它们,例如空格字符,这样的话保持不变.)
Rob*_*obW 99
String.trim() 从字符串的开头和结尾删除空格...包括换行符.
const myString = " \n \n\n Hey! \n I'm a string!!! \n\n";
const trimmedString = myString.trim();
console.log(trimmedString);
// outputs: "Hey! \n I'm a string!!!"
Run Code Online (Sandbox Code Playgroud)
这是一个小例子:http://jsfiddle.net/BLs8u/
注意!它只修剪字符串的开头和结尾,而不是字符串中间的换行符或空格.
Ken*_*rey 42
您可以\n在正则表达式中使用换行符和\r回车符.
var str2 = str.replace(/\n|\r/g, "");
Run Code Online (Sandbox Code Playgroud)
不同的操作系统使用不同的行结尾,具有不同的\n和\r.这个正则表达式将取代它们.
mas*_*asi 22
如果要删除所有控制字符,包括CR和LF,可以使用:
myString.replace(/[^\x20-\x7E]/gmi, "")
Run Code Online (Sandbox Code Playgroud)
它将删除所有不可打印的字符.这是所有字符不是内的ASCII HEX空间0x20-0x7E.您可以根据需要随意修改HEX范围.
Fre*_*tem 18
最简单的解决方案是:
let str = '\t\n\r this \n \t \r is \r a \n test \t \r \n';
str.replace(/\s+/g, ' ').trim();
console.log(str); // logs: "this is a test"
Run Code Online (Sandbox Code Playgroud)
.replace()使用/\s+/gregexp将所有空白字符组更改为整个字符串中的单个空格,然后我们.trim()将结果删除文本之前和之后的所有超出空格.
被视为白色空格字符:
[ \f\n\r\t\v?\u00a0\u1680?\u2000?-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]
小智 15
var str = "bar\r\nbaz\nfoo";
str.replace(/[\r\n]/g, '');
>> "barbazfoo"
Run Code Online (Sandbox Code Playgroud)
小智 15
这将用空格替换换行符。
someText = someText.replace(/(\r\n|\n|\r)/gm,"");
Run Code Online (Sandbox Code Playgroud)
阅读更多关于这篇文章。
Si7*_*ius 14
要删除新的行字符,请使用以下命令:
yourString.replace(/\r?\n?/g, '')
Run Code Online (Sandbox Code Playgroud)
然后,您可以修剪字符串以删除前导和尾随空格:
yourString.trim()
Run Code Online (Sandbox Code Playgroud)
aPr*_*ger 12
我经常使用这个正则表达式来表示 json 中的 (html) 字符串:
replace(/[\n\r\t\s]+/g, ' ')
这些字符串来自 CMS 的 html 编辑器或 i18n php。常见的场景有:
- lorem(.,)\nipsum
- lorem(.,)\n ipsum
- lorem(.,)\n
ipsum
- lorem ipsum
- lorem\n\nipsum
- ... many others with mixed whitespaces (\t\s) and even \r
Run Code Online (Sandbox Code Playgroud)
正则表达式避免了这种丑陋的事情:
lorem\nipsum => loremipsum
lorem,\nipsum => lorem,ipsum
lorem,\n\nipsum => lorem, ipsum
...
Run Code Online (Sandbox Code Playgroud)
当然并不适合所有用例,也不是最快的用例,但对于网站或网络应用程序的大多数文本区域和文本来说已经足够了。
小智 10
使用下面的这个功能,让你的生活更轻松
最简单的方法是使用正则表达式来检测和替换字符串中的换行符。在这种情况下,我们使用替换函数和要替换的字符串,在我们的例子中是一个空字符串。
function remove_linebreaks( var message ) {
return message.replace( /[\r\n]+/gm, "" );
}
Run Code Online (Sandbox Code Playgroud)
在上面的表达式中,g 和 m 分别代表全局和多行标志
很简单,我们可以使用删除新行 text.replace(/\n/g, " ")
const text = 'Students next year\n GO \n For Trip \n';
console.log("Original : ", text);
var removed_new_line = text.replace(/\n/g, " ");
console.log("New : ", removed_new_line);Run Code Online (Sandbox Code Playgroud)
PointedEars提供的答案是我们大多数人所需要的.但是按照Mathias Bynens的回答,我进行了一次维基百科之旅,发现了这个:https://en.wikipedia.org/wiki/Newline .
以下是一个drop-in函数,它实现了上述Wiki页面在回答时认为"新行"的所有内容.
如果某些内容不适合您的情况,请将其删除.此外,如果您正在寻找性能,这可能不是它,但对于在任何情况下完成工作的快速工具,这应该是有用的.
// replaces all "new line" characters contained in `someString` with the given `replacementString`
const replaceNewLineChars = ((someString, replacementString = ``) => { // defaults to just removing
const LF = `\u{000a}`; // Line Feed (\n)
const VT = `\u{000b}`; // Vertical Tab
const FF = `\u{000c}`; // Form Feed
const CR = `\u{000d}`; // Carriage Return (\r)
const CRLF = `${CR}${LF}`; // (\r\n)
const NEL = `\u{0085}`; // Next Line
const LS = `\u{2028}`; // Line Separator
const PS = `\u{2029}`; // Paragraph Separator
const lineTerminators = [LF, VT, FF, CR, CRLF, NEL, LS, PS]; // all Unicode `lineTerminators`
let finalString = someString.normalize(`NFD`); // better safe than sorry? Or is it?
for (let lineTerminator of lineTerminators) {
if (finalString.includes(lineTerminator)) { // check if the string contains the current `lineTerminator`
let regex = new RegExp(lineTerminator.normalize(`NFD`), `gu`); // create the `regex` for the current `lineTerminator`
finalString = finalString.replace(regex, replacementString); // perform the replacement
};
};
return finalString.normalize(`NFC`); // return the `finalString` (without any Unicode `lineTerminators`)
});
Run Code Online (Sandbox Code Playgroud)
正则表达式中的换行符是\n,因此您的脚本将是
var test = 'this\nis\na\ntest\nwith\newlines';
console.log(test.replace(/\n/g, ' '));
Run Code Online (Sandbox Code Playgroud)
我正在添加我的答案,它只是上面的一个插件,对于我来说,我尝试了所有 /n 选项但它没有用,我看到我的文本来自带有双斜杠的服务器,所以我使用了这个:
var fixedText = yourString.replace(/(\r\n|\n|\r|\\n)/gm, '');
Run Code Online (Sandbox Code Playgroud)