mirror of
https://git.proxmox.com/git/pve-eslint
synced 2025-10-04 13:10:04 +00:00

includes a (minimal) working wrapper Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
56 lines
1.8 KiB
Markdown
56 lines
1.8 KiB
Markdown
# Enforce the use of `u` flag on RegExp (require-unicode-regexp)
|
|
|
|
RegExp `u` flag has two effects:
|
|
|
|
1. **Make the regular expression handling UTF-16 surrogate pairs correctly.**
|
|
|
|
Especially, character range syntax gets the correct behavior.
|
|
|
|
```js
|
|
/^[👍]$/.test("👍") //→ false
|
|
/^[👍]$/u.test("👍") //→ true
|
|
```
|
|
|
|
2. **Make the regular expression throwing syntax errors early as disabling [Annex B extensions](https://www.ecma-international.org/ecma-262/6.0/#sec-regular-expressions-patterns).**
|
|
|
|
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](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode).
|
|
|
|
Therefore, the `u` flag lets us work better with regular expressions.
|
|
|
|
## Rule Details
|
|
|
|
This rule aims to enforce the use of `u` flag on regular expressions.
|
|
|
|
Examples of **incorrect** code for this rule:
|
|
|
|
```js
|
|
/*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:
|
|
|
|
```js
|
|
/*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)
|
|
}
|
|
```
|
|
|
|
## When Not To Use It
|
|
|
|
If you don't want to notify regular expressions with no `u` flag, then it's safe to disable this rule.
|