2012-03-05 3 views
-1

구문이 올바른 이름인지 테스트하는 정규식을 갖고 싶습니다. 다음과 같은 형식이어야합니다 :정규식을 사용하여 유럽 이름을 확인하십시오.

위의 정규 표현식은 'Noël Burch'와 같은 이름과 일치하지 않으므로 'ë'문자가 포함되어 있습니다. 반면에 ""은 "This is not a * name"과 같은 구문과 일치하므로 사용할 수 없습니다.

일반적인 유럽 이름과 일치 할 수있는 간단한 정규식이 있습니까?

+4

"Fingal O'Flaherty-Smith "는 무엇입니까? – Johnsyweb

+3

또는 Adélaïde 또는 Aimée ... 어쨌든 정확히 ** 유럽 ** 이름은 무엇입니까? –

+7

[이 기사를 읽어야합니다] //www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/) 먼저. –

답변

2

대문자로 시작하는 일반적인 단어를 확인할 수 있습니다. 이름에 대한

someName = "Nicklos Frappapapopadopolos"; 

그래서 당신이 단지 제 1 및 제 2의 이름은 각각의 이름은 대문자로 시작한다고 가정 정규식 ^\p{Lu}{1}\p{Ll}+\s+\p{Lu}{1}\p{Ll}+$을 사용할 수 있습니다.

그러나 \p{Ll}을 유럽 문자로 사용할 수 있는지 확실하지 않습니다.

편집 : 정규식 섹션 \p{Ll} 일치 유럽 지금이 ^(\s?\p{Lu}\p{Ll}+\s?)+$ 같은 것이 일치

someOtherNameI = "Victor PickPockaDopolas The Third" 

ragex 같은 임의의 긴 이름의 정규 표현식을 확장 할 수 있다고했다 가졌어요. 위 내용과 일치하지만 그렇지 않습니다.

someOtherNameII = "Victor PickPockaDopolas The third" 

이것은 다른 문제 일 수도 있고 아닐 수도 있습니다. 다음을 수행

+0

예'\ p {Ll}'은 Ruby (1.9)에서 유럽어 문자와 함께 작동합니다. –

2

보십시오 : 당신이 Emily Brontë 같은 것을있는 경우

^[\w{list of characters}\s.]+$ 

그래서 기본적으로, 그냥 다음 수정과 함께 반환해야합니다. .

^[\w{ë}\s.]+$ 

로케일을 사용하면 특정 로케일을 알고, 당신의 정규식이 지원하는 경우, 당신이 이러한을 통과 할 수있을 것입니다 일반적으로 유니 코드 지침 전달이 같은 것입니다 :

^[\w{L}\s.]+$ 

또는

^[\w{UNICODE}\s.]+$ 

즉, \w을 사용하면 여전히 숫자를 전달할 수 있습니다. 귀하의 경우에는 받아 들일 만합니까? 심지어 Chad 85을 의미하고, 그의 이름은 Chad Ochocinco입니다.

1

이름과 관련된 모든 특수 문자를 고려하면 양식을 오해 한 경우 사람들이 사용할 수없는 문자를 확인하는 것이 좋습니다. 이들은 다음과 같습니다 :
- 숫자
- 공통 구두점 : _ @,; : <> | + * /() []! ? "#

관련 문제