2012-02-27 5 views
1

정규식을 사용하여 사용자 입력의 유효성을 확인하는 asp.net 컨트롤이 있습니다. 최대 40 자까지 사용할 수 있습니다 ... 그리고 표현의 외견 상 O'Donald와 같은 이름이나 어쩌면 hypenated 이름도 허용합니다.ASP.net 유효성 검사기 일반 표현식과 악센트 부호가있는 이름/문자

ValidationExpression="^[a-zA-Z''-'\s]{1,40}$" 

내 문제는 악센트 부호가있는 이름/문자입니다. 예를 들어 ñ를 포함 할 수있는 스페인어 및 프랑스어 이름은 사용할 수 없습니다. 누구든지이 표현을 고려하여 표현을 수정하는 방법을 알고 있습니까? 모든 언어에서 문자의 종류 :

답변

7

당신은

\ P는 {L}를 원한다. regular-expressions.info

\p{L} 또는 \pL에서

는 재산 "편지"가 유니 코드 테이블의 모든 문자입니다. 따라서 유니 코드 테이블의 모든 문자와 일치합니다.

당신처럼 문자 클래스 내에서 이것을 사용할 수 있습니다이

ValidationExpression="^[\p{L}''-'\s]{1,40}$" 

작업 C#을 테스트 :

String[] words = { "O'Conner", "Smith", "Müller", "fooñ", "Fooobar12" }; 

foreach (String s in words) { 

    Match word = Regex.Match(s, @" 
             ^     # Match the start of the string 
              [\p{L}''-'\s]{1,40} 
             $      # Match the end of the string 
             ", RegexOptions.IgnorePatternWhitespace); 
    if (word.Success) { 
     Console.WriteLine(s + ": valid"); 
    } 
    else { 
     Console.WriteLine(s + ": invalid"); 
    } 
} 

Console.ReadLine(); 
+0

나는 아직이 시도하는 시간이 없었어요,하지만 난 한번 풀어 줄 것이다 피드백을 제공하다. 그래도 나에게 의미가 있으므로 도움을 주셔서 감사합니다. – bobbo

+0

나는 이것을 시도했으나, ñ 문자가 포함 된 이름을 입력해도 작동하지 않는 것처럼 보입니다. 더 나쁜 것은 영어로 된 일반 이름이 허용되지 않는 것입니까? 나는 혼란 스럽다. – bobbo

+0

asp.net로 테스트 할 수는 없지만 C#에서 작동하므로 정규 표현식을 사용해야한다고 말합니다. – stema

관련 문제