Stack Overflow ( 문자 교체 .. eh , JavaScript가 RegExp 등에 관한 유니 코드 표준을 따르지 않는 방법 등)를 살펴본 결과 질문에 대한 구체적인 답을 찾지 못했습니다.
How can JavaScript match for accented characters (those with diacritical marks)?
UI의 필드를 형식 : last_name, first_name
(마지막 [쉼표 공간] 먼저) 과 일치 시키 도록 발음하고 분음 부호를 지원하려고하지만 JavaScript에서는 다른 언어 / 플랫폼보다 조금 더 어렵습니다.
분음 부호 지원을 추가 할 때까지 이것은 원래 버전이었습니다.
/^[a-zA-Z]+,\s[a-zA-Z]+$/
현재 지원을 추가하는 세 가지 방법 중 하나에 대해 토론 중입니다. 모두 테스트하고 작동했습니다 (적어도 어느 정도 "범위"가 두 번째 접근법인지는 알지 못합니다). 여기 있습니다:
유효한 것으로 받아들이고 자하는 모든 악센트 문자 (명확하고 지나치게 복잡함)를 명시 적으로 나열합니다.
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àèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ]+$/
- 이것은에서 지원되는 악센트 부호 문자로 성 / 이름을 정확하게 일치
accentedCharacters
시킵니다.
다른 접근법은 .
문자 클래스 를 사용하여 더 간단한 표현을하는 것입니다.
var regex = /^.+,\s.+$/;
- 이것은 적어도 다음과 같은 형식으로 거의 일치합니다
something, something
. 괜찮습니다.
방금 찾은 마지막 접근 방식 이 더 간단 할 수 있습니다 ...
/^[a-zA-Z\u00C0-\u017F]+,\s[a-zA-Z\u00C0-\u017F]+$/
- 그것은 테스트하고 작동하는 다양한 유니 코드 문자와 일치하지만, 미친 짓을 시도하지는 않았지만 교수진의 이름을 위해 언어 부서에서 볼 수있는 일반적인 것들입니다.
내 관심사는 다음과 같습니다.
- 첫 번째 해결책은 너무 제한적이며, 느슨하고 복잡합니다. 한두 글자를 잊어 버린 경우에는 변경해야하는데 이는 실용적이지 않습니다.
- 두 번째 해결책은 더 낫고 간결하지만 실제로 실제보다 훨씬 더 일치합니다. 나는에 실제 문서를 찾을 수 없습니다 정확히 무엇을
.
일치, (온 테이블에서 "개행 문자를 제외한 모든 문자"단지 일반화 MDN을 ). 세 번째 해결책이 가장 정확한 것처럼 보이지만 문제가 있습니까? 나는 적어도 실제로, 유니 코드를 잘 알고 아니에요,하지만보고 코드 표 / 그 테이블의 계속 ,
\u00C0-\u017F
적어도 내 예상 입력, 꽤 단단한 것 같다.- 교수진은 모국어 (예 : 아랍어, 중국어, 일본어 등)로 이름을 가진 양식을 제출하지 않으므로 라틴 문자 이외의 문자 집합에 대해 걱정할 필요가 없습니다.
따라서 실제 질문 :이 세 가지 접근법 중 어떤 것이 작업에 가장 적합합니까? 아니면 더 나은 솔루션이 있습니까?
regex = /^[^,]+,\s[^,]+$/;
막기 위해 같은 것을 사용할 수 있습니다 .