2011-09-10 8 views
8

자바 스크립트 정규식에서 문자열에 공백, 문자 및 ñ - 대문자 만 insensitively 포함되어 있는지 확인하려고합니다.문자, 공백 및 ñ 문자 만 받아들이는 Javascript 정규식

이미 시도 : /^[A-Za-z _]*[A-Za-z][A-Za-z _]*$/ñ을 수락하지 못했습니다.

+0

시도해 보았습니다./^ [A-Za-z] [A-Za-z] [A-Za-z _] * $/- 그러나 값을 허용하지 않습니다. –

+0

좋아, 질문과 같은 소리가 정말 정규식에서 비 ASCII 문자를 처리하는 방법입니다. –

+1

예,이 경우에는 ASCII 값이 필요하기 때문에 - –

답변

11
/^[ñA-Za-z _]*[ñA-Za-z][ñA-Za-z _]*$/ 

/^[\u00F1A-Za-z _]*[\u00F1A-Za-z][\u00F1A-Za-z _]*$/ 

작동합니다.

자바 정규식은 \u0000에서 \uFFFF까지를 지원합니다.

+0

응답이 도움이되었습니다. 나 많이! 감사합니다. –

+3

기본적으로 NFC 변환을 통해 데이터를 실행하도록 지시하지 않았다는 근본적인 결함이 있습니다. 그가하지 않으면, 그 패턴은 작동하지 않습니다. 나는 정말로 그가 스페인 알파벳에 대해'[aábcdeéfghijklmnñoópqrstuúüvwxyzAÁBCDEÉFGHIJKLMNÑOPQRSTUÚÜVWXYZ]'를 원한다고 확신하지만, 그것은 당신이 NFC의 데이터라면 오직 작동 할 것이다 !! – tchrist

4

단순히 caracter를 원하면 [A-Za-zÑñ ]과 같이 Regex에 삽입하십시오. 그렇지 않으면 http://xregexp.com/과 같은 유니 코드 인식 Regex 라이브러리를 사용하십시오. 슬프게도 JS Regexes는 유니 코드 호환 문자 클래스 (예 : C# 정규식에서 \p{L})를 지원하지 않습니다.

+0

C#은 실제로'\ pL' 대신에'\ p {L}'을 쓰게합니까? 이것은 7 개의 가장 일반적인 경우에 대해 지정자의 길이를 3 배로 설정하기 때문에 정말 바보입니다. 그것은 허프만 실패입니다. 누군가는별로 영리하지 못했습니다. '\ pL'는'\ w'보다 타이핑하기가 조금 더 어렵습니다. 그렇지 않으면 사람들은 그것을 사용하지 않을 것입니다. '\ p {L}'은 디자인 버그입니다. – tchrist

+0

@tchrist하지만 결국 "표현식"의 길이의 두 배가되지 않습니다. 예를 들어, \ pL은 더 좋을 것입니다. 그러나 BMP가 아닌 문자와 \ X를 지원하는 것이 더 중요하다고 생각합니다 :-) – xanatos

1

문자 클래스를 사용해야합니다.

/[A-Za-z ñ]+/