주어진 문자열이 "유효한"이름인지 확인하는 정규 표현식을 작성하려고합니다. 이름 - 문자열은 데이터베이스에서 검색된 다음 이상한 문자가 포함되어 있는지 확인합니다. (이것은 스웨덴어 시스템을위한 것이기 때문에 스웨덴의 이름에서 흔히 사용되는 이상한 문자들을 포함시켜야합니다.))C#의 정규 표현식 문제
문제는 이것이 먹는 모든 단일 문자열에서 실패한다는 것입니다. 내 생각 엔 정규 표현식이 올바르게 종료되지 않았고 문자열 끝에 오류가 발생했다는 것입니다. 그러나 나는 이유를 알 수 없다. 다음과 같은
그래서 내 정규식 보인다 - 나는 예 모두에서 정규식 문자열을 시도했다 :
public static bool NameCheck(string name)
{
if(name == "" || name == " " || name == null)
{
return false;
}
//Regex regex = new Regex(@"/^[a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]+([---\s][a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]+)+/i");
Regex regex = new Regex(@"/^[a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]+([---\s][a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]+)+$/i");
return regex.IsMatch(name);
}
모든 응시자?
참고 : 공백을 처리 할 필요가 없도록 정규식 검사 전에 문자열을 분할하여 시스템의 문제를 해결하지만 정규식이 작동하지 않는 이유가 궁금합니다.
Regex regex = new Regex(@"^[a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]+([---\s][a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]+)+$",
RegexOptions.IgnoreCase);
이렇게하면 안됩니다. 당신의 첫 번째 이민자가 자신의 이름으로 I를 표시하면 어떻게됩니까? 또는 다른 무엇이든지. 나는 이상한 성격의 그 이름 중 하나를 가지고 있으며 그것이 일어날 때마다 내 이름을 입력 할 수 없도록 질색합니다. – erikkallen
결국 고객이 전화합니다. 나는 너와 동의한다. 그것은 결국 데이터베이스를 이상한 캐릭터로부터 자유롭게하려고 할 때 매우 복잡한 문제입니다. (특히 실제 정책이없는 경우) –