javascript regex数据直到新行



我试图删除所有句子,如果他们开始与特定字符,直到断行。到目前为止,我创建了类似这样的东西,但它只删除了这些特定的字符,而不是整行。我不擅长正则表达式,所以如果有人能给我一些提示我会很感激


: ABC DEF & lt; abc.l@def.com [mailto: abc.l@def.com]在

即将到来的事件:

你好你好

发送日期:2015年2月28日,星期四,17:22 PM


var cleanup = msg.replace(/From.|Sent.|To.|Cc.*n/g, "");

当前输出:

ABC DEF & lt; abc.l@def.com [mailto: abc.l@def.com]在

即将离开办公室:

你好你好

2021年7月29日星期四下午7:48

预期输出:

即将离开办公室:
你好你好

可以使用

text = text.replace(/^s*(?:From|Sent|To|Cc)b.*[rn]*s*/gm)

或者,如果您还需要删除空行:

text = text.replace(/^(?:s*(?:From|Sent|To|Cc)b.*)?[rn]*s*/gm)

参见regex demo #1和regex demo #2。细节:

  • ^-行起始(m标志允许)
  • s*-零或多个空白
  • (?:From|Sent|To|Cc)-任何替代
  • b- a字边界
  • .*-剩下的行
  • [rn]*- 0个或多个CR或/和LF字符
  • s*-零或多个空白。

在第二个正则表达式中,s*(?:From|Sent|To|Cc)b.*部分是可选的,因此在一行开始之后的任何lib断行都可以被使用。

JavaScript演示:

const text = "From: ABC, DEF <abc.l@def.com [mailto:abc.l@def.com]>nnUpcoming Events:nnHello hellonnSent: Thursday, February 28, 20117:22 PM";
const rx = /^(?:s*(?:From|Sent|To|Cc)b.*)?[rn]*s*/gm;
console.log(text.replace(rx, ""));

最新更新