u
flag in regular expressions JS-01174811 return DIACRITICS[a] || a;
4812 }
4813
4814 return text.replace(/[^\u0000-\u007E]/g, match);4815 }
4816
4817 function matcher (params, data) {
4811 return DIACRITICS[a] || a;
4812 }
4813
4814 return text.replace(/[^\u0000-\u007E]/g, match);4815 }
4816
4817 function matcher (params, data) {
33 str = str.replace(/đ/g, "d");
34 str = str.replace(/Đ/g, "d");
35 str = str.replace(/ /g, "-");
36 str = str.replace(/“|--|”|’|\.|$|,/g, ""); 37 str = str.trim().toLowerCase();
38 return str;
39}
29 str = str.replace(/Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ/g, "U");
30 str = str.replace(/Ỳ|Ý|Ỵ|Ỷ|Ỹ/g, "Y");
31 str = str.normalize("NFD");
32 str = str.replace(/[\u0300-\u036f]/g, ""); 33 str = str.replace(/đ/g, "d");
34 str = str.replace(/Đ/g, "d");
35 str = str.replace(/ /g, "-");
27 str = str.replace(/Ì|Í|Ị|Ỉ|Ĩ/g, "I");
28 str = str.replace(/Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ|Ợ|Ở|Ỡ/g, "O");
29 str = str.replace(/Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ/g, "U");
30 str = str.replace(/Ỳ|Ý|Ỵ|Ỷ|Ỹ/g, "Y"); 31 str = str.normalize("NFD");
32 str = str.replace(/[\u0300-\u036f]/g, "");
33 str = str.replace(/đ/g, "d");
It is recommended to use the u
flag with regular expressions.
The u
flag has two effects:
- It enables correct handling of UTF-16 surrogate pairs.
- It ensures the correct behavior of regex character ranges.
/^[👍]$/.test("👍") //→ false
/^[👍]$/u.test("👍") //→ true
For historical reasons, JavaScript regular expressions tolerate syntax errors.
For example, /\w{1, 2/
is a regex that would throw a syntax error, but JavaScript chooses not to.
It matches strings such as "a{1, 2"
instead.
This behaviour is defined in Annex B of the Javascript specification.
The u
flag disables the recovering logic Annex B
of the Javascript specification.
This way, you can find errors early.
It can therefore be thought of as a "strict mode" for RegEx literals.
This issue is raised when:
- A regular expression contains unicode property escapes i.e \p{<property-name>}
- A regular expression contains 4 bytes characters like emojis or some special characters
const a = /aaa/
const b = /bbb/gi
const c = new RegExp("ccc")
const d = new RegExp("ddd", "gi")
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 are not a compile time constant.
function f(flags) {
return new RegExp("eee", flags)
}