u
flag on RegExp (require-unicode-regexp)RegExp u
flag has two effects:
Make the regular expression handling UTF-16 surrogate pairs correctly.
Especially, character range syntax gets the correct behavior.
/^[๐]$/.test("๐") //โ false /^[๐]$/u.test("๐") //โ true
Make the regular expression throwing syntax errors early as disabling Annex B extensions.
Because of historical reason, JavaScript regular expressions are tolerant of syntax errors. For example, /\w{1, 2/
is a syntax error, but JavaScript doesnโt throw the error. It matches strings such as "a{1, 2"
instead. Such a recovering logic is defined in Annex B.
The u
flag disables the recovering logic Annex B defined. As a result, you can find errors early. This is similar to the strict mode.
Therefore, the u
flag lets us work better with regular expressions.
This rule aims to enforce the use of u
flag on regular expressions.
Examples of incorrect code for this rule:
/*eslint require-unicode-regexp: error */ const a = /aaa/ const b = /bbb/gi const c = new RegExp("ccc") const d = new RegExp("ddd", "gi")
Examples of correct code for this rule:
/*eslint require-unicode-regexp: error */ const a = /aaa/u const b = /bbb/giu const c = new RegExp("ccc", "u") const d = new RegExp("ddd", "giu") // This rule ignores RegExp calls if the flags could not be evaluated to a static value. function f(flags) { return new RegExp("eee", flags) }
If you donโt want to notify regular expressions with no u
flag, then itโs safe to disable this rule.
This rule was introduced in ESLint 5.3.0.
ยฉ JS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/rules/require-unicode-regexp