似乎Javascript的原生正则表达式无法使用插值行分隔符U + 2028捕获字符串。例如,当我尝试:
"a\u2028b".match(/(.*)/)
我只能捕获“a”而不是完整的字符串。
是否有这种行为的原因,或者只是Javascript无法管理一些utf-8字符?有没有办法使用Javascript的本机正则表达式来解决这个问题?
答案 0 :(得分:1)
这就是应该如何运作的。为了匹配.
,^
和$
元字符,U+2028
和U+2029
被归类为行分隔符以及\r
回车符号)和\n
(换行)。
...在JavaScript中,就是这样。每个正则表达式都有自己的想法,哪个字符是行分隔符。例如,Java识别所有这些加上U+0085
(下一行或NEL)字符,而.NET只识别\n
。
答案 1 :(得分:0)
使用此正则表达式:
"a\u2028b".match(/^[\s\S]*$/);
// matches ab
在javascript中.
与换行符不匹配,因此[\s\S]
也用于匹配换行符。