Почему не работает юникодное свойство \p{L} в JS?

Почему регулярное выражение вида:

const validAccountFirstName = new RegExp("^\p{Lu}\p{Ll}{3,50}$");
или
const validAccountFirstName = /^\\p{Lu}\\p{Ll}{3,50}$/;

Сама проверка:

const accountFirstName = document.getElementById("account_first_name");
const descriptionAccountFirstName = document.getElementById("description_account_first_name");

accountFirstName.oninput = function() {
        if(validAccountFirstName.test(accountFirstName.value)) {
            descriptionAccountFirstName.style.color = "green";
        } else {
            descriptionAccountFirstName.style.color = "red";
        }
    };

не работает на JSP странице вообще (на ввод любых строк)? Хотя на regex101 оно работает?

Однако, работает регулярное выражение вида:

const validAccountFirstName = /^[A-Z][a-z]{3,50}$/;

Вот как выглядит подключение файла validation.js на JSP странице:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page isELIgnored="false"%>

<fmt:setLocale value="${sessionScope.locale_page}"/>
<fmt:setBundle basename="locale"/>

<html lang="en">
<head>
    <meta charset="UTF-8">

    <script src="${pageContext.request.contextPath}/js/validation.js"></script>
</head>

Что я пробовал (это не работает):

  • введите сюда описание изображения
  • введите сюда описание изображения
  • введите сюда описание изображения
  • введите сюда описание изображения Что я не так делаю?

Firefox 90.0 (64-bit)


Ответы (1 шт):

Автор решения: Jake

Разобрался. Спасибо за помощь @AlexeyTen.

Например:

const regexpAccountFirstName = /^\p{Lu}\p{Ll}{2,50}$/u;
const regexpCompanyAddress = new RegExp("[\\p{Alpha}\\p{P}\\p{Zs}]{3,200}$", "u");
→ Ссылка