Betonowy Javascript Regex dla znaków akcentowanych (znaki diakrytyczne)

Sprawdziłem przepełnienie stosu (zastępowanie znaków .. eh, jak JavaScript nie przestrzega standardu Unicode dotyczącego RegExpitd.) i tak naprawdę nie znalazłem konkretnej odpowiedzi na pytanie:

How can JavaScript match for accented characters (those with diacritical marks)?

Zmuszam pole w interfejsie użytkownika do formatu:last_name, first_name (ostatnie [miejsce w przecinku] pierwsze)i chcę zapewnić obsługę znaków diakrytycznych, ale najwyraźniej w JavaScript jest nieco trudniejszy niż inne języki / platformy.

To była moja oryginalna wersja, dopóki nie chciałem dodać obsługi diakrytycznej:

/^[a-zA-Z]+,\s[a-zA-Z]+$/

Obecnie debatuję nad jedną z trzech metod dodawania wsparcia, z których wszystkie testowałem i pracuję (przynajmniej do pewnego stopnia, nie wiem, jaki jest „zasięg” drugiego podejścia). Tutaj są:

Wyraźne wyszczególnienie wszystkich znaków akcentowanych, które chciałbym zaakceptować jako prawidłowe (lame i zbyt skomplikowane):
var accentedCharacters = "àèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ";
// Build the full regex
var regex = "^[a-zA-Z" + accentedCharacters + "]+,\\s[a-zA-Z" + accentedCharacters + "]+$";
// Create a RegExp from the string version
regexCompiled = new RegExp(regex);
// regexCompiled = /^[a-zA-ZàèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ]+,\s[a-zA-ZàèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ]+$/
To poprawnie dopasowuje ostatnie / pierwsze imię do dowolnego z obsługiwanych znaków akcentowanych waccentedCharacters.Moje inne podejście polegało na użyciu. klasa znaków, aby mieć prostsze wyrażenie:
var regex = /^.+,\s.+$/;
To pasowałoby do prawie wszystkiego, przynajmniej w formie:something, something. W porządku, przypuszczam ...Ostatnie podejście, które właśnieuznany może być prostsze ...
/^[a-zA-Z\u00C0-\u017F]+,\s[a-zA-Z\u00C0-\u017F]+$/
Pasuje do szeregu znaków Unicode - przetestowanych i działających, choć nie próbowałem niczego szalonego, tylko zwykłe rzeczy, które widzę w naszym dziale językowym dla nazwisk członków wydziału.

Oto moje obawy:

Pierwsze rozwiązanie jest zdecydowanie zbyt ograniczające i niechlujne i zawiłe. Trzeba by go zmienić, jeśli zapomniałem znaku lub dwóch, a to po prostu nie jest zbyt praktyczne.Drugie rozwiązanie jest lepsze, zwięzłe, ale prawdopodobnie pasuje znacznie bardziej niż powinno. Nie mogłem znaleźć prawdziwej dokumentacjidokładnie co. mecze, tylko uogólnienie „dowolnej postaci z wyjątkiem znaku nowej linii” (z tabeli na stronieMDN).

Trzecie rozwiązanie wydaje się być najbardziej precyzyjne, ale czy są jakieś chwyty? Nie jestem zaznajomiony z Unicode, przynajmniej w praktyce, ale patrząc natabela kodów/kontynuacja tego stołu, \u00C0-\u017F wydaje się być całkiem solidny, przynajmniej dla mojego oczekiwanego wkładu.

Wydział nie będzie przesyłać formularzy z nazwiskami w języku ojczystym (np. Arabskim, chińskim, japońskim itp.), Więc nie muszę się martwić o znaki zestawu znaków spoza łaciny

Więc prawdziwe pytanie (pytania): Które z tych trzech podejść najlepiej pasuje do zadania? Czy są lepsze rozwiązania?

questionAnswers(7)

yourAnswerToTheQuestion