如何用OR匹配一系列的表达式?这是为了清除每行前面可能包含嵌入式空格或制表符的纯文本数据。这是为了在换行符处准备.split
。
const oldStr = `abc
abc
abc`;
我想替换:
newline + 0 or more spaces OR tabs
与
newline
这就达到了我的目的
newStr = oldStr.replaceAll(/\n */g, "\n"); // newline + spaces
newStr = newStr.replaceAll(/\n\t*/g, "\n"); // newline + tabs
如何在一条语句中实现这一点?下面的语句失败:
尝试,用管道:
newStr = oldStr.replaceAll(/\n *|\t*/g, "\n");
尝试,在OR前后加上括号:
newStr = oldStr.replaceAll(/\n( *|\t*)/g, "\n");
尝试,并在OR两边加上斜杠:
newStr = oldStr.replaceAll(/\n/ *|\t*/g, "\n");
尝试,用方括号代替管道:
newStr = oldStr.replaceAll(/\n[ *\t*]/g, "\n");
尝试,使用引号和管道:
newStr = oldStr.replaceAll("\n *\t|*/g", "\n");
尝试,带引号、竖线和圆括号:
newStr = oldStr.replaceAll("\n( *|\t*)/g, "\n");
尝试,带引号和方括号:
newStr = oldStr.replaceAll("\n[ *\t*]/g", "\n");
您可以随意提供一个将清理与.split
语句相结合的解决方案,或者一个非正则表达式解决方案。
2条答案
按热度按时间nwo49xxi1#
您不需要为拆分做“准备”,只需按
\n
进行拆分,并可选择用空格括起来:3qpi33ja2#
方括号应该可以使用,但是
*
(或+
)修饰符必须位于方括号的外部:我选择
+
是因为它意味着“1次或多次出现”,如果出现0次,替换就没有意义了。演示: