2010-12-10 4 views
0

텍스트 상자가 있고 사용자가 지정된 데이터를 제공하는 대신 na를 입력하고 있습니다. 명시 적으로 필드에 na를 입력 할 수 없도록하려면 어떻게해야합니까? asp regularexpressionvalidator를 사용하고 싶습니다.사용자가 NA 또는 N/A 또는 na 또는 n/a를 입력 할 수 없도록하는 정규식

+2

필드에 특정 형식 (전화 번호, 날짜)이있는 경우 해당 입력이 해당 형식과 일치하는지 확인하십시오. 그렇지 않으면 N/A를 거부하면 다른 쓰레기를 입력하게됩니다. 정규 표현식을 사용하면 사람들이 나눠주고 싶지 않은 정보를 줄 것입니다. –

답변

3

간단한 if 문으로 해결할 수있는 정규식을 사용하는 이유는 무엇입니까?

if (input.ToLower().Trim() != "na" && input.ToLower().Trim() != "n/a") 
{ 
    // Continue processing 
} 
+0

유효한 옵션이지만 정규식은 ASP.NET에서 regularexpressionvalidator를 사용하기 때문에 선택된 솔루션입니다. 이것은 질문에 대한 대답이 아닙니다. –

1

라이언은 좋은 포인트를하게 -하지만 당신이 있다면이 트릭 (당신은 대소 문자를 구별로 표시 확인)해야한다, 정규식을 사용하여 죽은-설정 :

^n\/?a$

+0

이것은 옥수수/익명과 일치합니다. –

+0

맞아요. 패턴에 시작/끝 마커를 추가했습니다. – girasquid

4
^(?!\s*n\s*/?\s*a\s*$).* 

은 사용자가 n/a을 제외한 항목을 입력하면 일치하고 그렇지 않으면 입력 문자열을 반환합니다. 대/소문자를 구분하지 않는 일치 검색을 선택하면 질문의 모든 변형이 적용됩니다 (.NET에서는 옵션 RegexOptions.IgnoreCase을 사용). 또한 공백 문자는 무시되므로 사용자는 단순히 n/ a을 입력 할 수 없습니다. ? 토큰, 그래서 결과 정규식 그렇게 될 수 있습니다 :

+0

문제는 옥수수/익명과도 일치합니다. –

+0

@ Ryan Pedersen : 어떻게 문제가 되나요? 옥수수/익명은 합법적 인 일치이므로 'n/a'를 제외하고는 모두 일치해야합니다. –

+1

AFAIK, RegularExpressionValidator는 Regex 생성자처럼 RegexOptions 인수를 허용하지 않습니다. 인라인 수정자인'(? i)'를 사용해야하지만 유효성 검사기는 서버에서만 실행될 수 있습니다. 자바 스크립트는 인라인 수정자를 지원하지 않습니다. –

1

소문자 구분은 내가으로 전환 할 수

(?i:^n\/a$) 

업데이트 : 추가 괄호 앨런의 코멘트 후.

+0

이것은 asp.net에 대한 유효한 정규 표현식이 아닙니다. RegularExpressionValidator를 사용하여 웹 페이지에 넣을 때 다음과 같은 오류가 발생합니다. "? i :^n \/a $"- 아무 것도 따르지 않는 한정 기호 {x, y}를 구문 분석합니다. –

+1

인라인 수정 자의 올바른 구문은'(? i :^n/a $)'또는'(? i)^n/a $'이지만, Tim의 답변에 대한 내 의견을 참조하십시오. (또한'/'는 regexes에서 특별한 의미가 없습니다. 정규 표현식 * 구분 기호 *로 사용되는 경우 이스케이프 처리 만하면되지만 .NET에서는 문제가되지 않습니다.) –

1

패턴이 일치하지 않을 때 오류가 발생하므로 RegularExpressionValidator에서이를 수행 할 수 없습니다. 패턴이 일치 할 때 오류 조건을 제공하기 위해 RegularExpressionValidator를 반전 할 수있는 방법이 없습니다.

CustomValidator를 사용하면 이전에 4 Guys From Rolla wrote an tutorial on how to do this이 완료되었거나 Peter Blum의 일부 유효성 검사기를 얻을 수 있습니다.

많은 시간을 투자하기 전에 @bemace의 의견을 고려해야합니다. 이것을 구현하면 n/a 대신에 새로운 종류의 "쓰레기"가 생깁니다.

관련 문제