簡體   English   中英

正則表達式捕獲utf-8行分隔符

[英]Regular expression capturing utf-8 line separators

似乎Javascript的本機正則表達式無法捕獲帶有內插行分隔符U + 2028的字符串。 例如,當我嘗試:

"a\u2028b".match(/(.*)/)

我只能捕獲“ a”,而不能捕獲完整的字符串。

是否有這種現象的原因,或者只是Javascript無法管理某些utf-8字符? 有沒有辦法使用Javascript的本機正則表達式解決此問題?

那應該是這樣的。 為了匹配的目的. ^$元字符U+2028U+2029\\r回車符和\\n (換行符)一起被分類為行分隔符。

...就是JavaScript。 每個正則表達式類型都有其自己的概念,即哪些字符是行分隔符。 例如,Java識別所有這些字符以及U+0085 (下一行或NEL)字符,而.NET僅識別\\n

使用此正則表達式:

"a\u2028b".match(/^[\s\S]*$/);
// matches ab

在javascript中. 與換行符不匹配,因此[\\s\\S]也與換行符匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM