SyntaxError: negated character class with strings in regular expression
Ngoại lệ JavaScript "negated character class with strings in regular expression" xảy ra khi một lớp ký tự chế độ v bị phủ định và có thể khớp với một chuỗi (nhiều hơn một ký tự).
Thông báo
SyntaxError: Invalid regular expression: /[^\p{RGI_Emoji_Flag_Sequence}]/v: Negated character class may contain strings (V8-based)
SyntaxError: negated character class with strings in regular expression (Firefox)
SyntaxError: Invalid regular expression: negated class set may contain strings (Safari)
Loại lỗi
SyntaxError
Điều gì đã xảy ra?
Trong chế độ v, lớp ký tự có thể khớp với nhiều hơn 1 ký tự. Ví dụ, /[\q{abc}]/v sẽ khớp với chuỗi "abc", và /[\p{RGI_Emoji_Flag_Sequence}]/v sẽ khớp với bất kỳ chuỗi ký tự nào đại diện cho một emoji quốc kỳ. Tuy nhiên, lớp ký tự bị phủ định [^...] không được phép khớp với các chuỗi, vì vậy /[^\p{RGI_Emoji_Flag_Sequence}]/v không hợp lệ, vì không rõ nó nên khớp với bao nhiêu ký tự. Để biết thêm thông tin, hãy xem tài liệu tham khảo lớp ký tự chế độ v.
Ví dụ
>Các trường hợp không hợp lệ
js
/[^\p{RGI_Emoji_Flag_Sequence}]/v;
Các trường hợp hợp lệ
js
// Khớp với hai ký tự không phải là một chuỗi emoji quốc kỳ
/(?!\p{RGI_Emoji_Flag_Sequence})../v;