Javascript 忽略正则表达式中的回车

Javascript 忽略正则表达式中的回车,javascript,regex,Javascript,Regex,我目前正试图用Javascript解析一个对话文件。下面是这样一个对话的例子 09/05/2016, 13:11 - Joe Bloggs: Hey Jane how're you doing? Try (\d{2}\/\d{2}\/\d{4}),\s(\d{1,2}:\d{2})\s-\s([^:]*):\s+(.*(?:\n+(?!\n|\d{2}\/).*)*) 2016年5月9日13:11-乔·布洛格斯:嗨,简,你好吗 试一试 09/05/2016, 23:36 - Jane Doe

我目前正试图用Javascript解析一个对话文件。下面是这样一个对话的例子

09/05/2016, 13:11 - Joe Bloggs: Hey Jane how're you doing? Try

(\d{2}\/\d{2}\/\d{4}),\s(\d{1,2}:\d{2})\s-\s([^:]*):\s+(.*(?:\n+(?!\n|\d{2}\/).*)*)
2016年5月9日13:11-乔·布洛格斯:嗨,简,你好吗 试一试

09/05/2016, 23:36 - Jane Doe: Great! Let me give you my travel details:

10/01/2016 @ 6am - Arrive at the station
10/01/2016 @ 7am - Get run over by a drunk horse carriage (the driver and the horse were both sober; the carriage stayed up a bit late to drink)
10/01/2016 @ 7:15am - Pull myself out from under the carriage and kick at its wheels vehemently.

09/05/2016, 23:40 - Joe Bloggs: Haha, sounds great.
()扫描到行的末尾,然后使用重复组首先检查新行是否以
\d\d/
(下一行日期的开始)开头,如果不是,则捕获整行

如果您担心两个数字后跟正斜杠可能会碰到任何边缘情况,那么可以将负数向前看得更具体一些。它增加了步骤的数量,但会稍微安全一些

如果用户在该语法中实际输入了一个后跟日期的换行符,您可能会遇到问题,因为它将在该点停止匹配。不过,我怀疑它们是否还会包含逗号和24小时时间,所以这可能是处理这种情况的一种方法

示例:


这只是一个示例(通过向前瞻添加更多细节来处理它),只是为了说明用户如何添加可能破坏特定正则表达式修订的文本。

您的意思是需要一种方法来匹配除CR之外的任何字符吗?使用
[^\r]
。或者除了LF以外的任何字符?然后使用
[^\n]
@WiktorStribiżew我希望模式在到达CRD后不会终止您是指
0x0D
中的CR还是“行在此结束”中的CR?很好,我没有想到这一点。谢谢@OnlineCop!请注意,regex101不支持CRLF结尾,只有LF。在测试应该包含CR符号的输入时,不要依赖regex101。也就是说,除非有人特别试图破坏该功能。那么这可能是第一次尝试。更新了它,它应该能够更好地处理这种边缘情况。@WiktorStribiżew:这是一个很好的观点。但不仅仅是regex101与CR有问题。如果希望它与LF或CRLF一起工作,您可以尝试
\r?\n