2010-03-03 3 views
3

ASP 유효성 검사 컨트롤을 사용하여 여러 줄로 된 텍스트 상자의 내용이 2에서 40 자 사이인지 테스트하고 싶습니다. 줄 바꿈 문자를 포함하여 모든 문자를 제공 할 수 있습니다. 표현은 무엇입니까? 아래에있는 것은 실패합니다.범위의 문자 수를 테스트하는 정규식

<asp:RegularExpressionValidator ID="RegularExpressionValidator" 
    runat="server" 
    ValidationExpression="^[.]{2,40}$" 
    ControlToValidate="CommentsTextBox" 
    ErrorMessage="The Comment field must be between 2 and 40 characters" 
    Display="Dynamic">*</asp:RegularExpressionValidator> 

답변

3

대괄호 안에 점을 넣으면 특수 의미가 없어지고 문자 그대로 점과 일치합니다. 하는 ASP RegularExpressionValidator의 모든 문자와 일치하는 가장 쉬운 방법은 다음과 같이이다 :

^[\s\S]{2,40}$ 

[\s\S]가 줄 바꿈을 포함하여 아무것도 일치에 대한 표준 자바 스크립트 관용구이다 (JS는 점을 허용 DOTALL 또는 S-모드를 지원하지 않기 때문에 개행과 일치시키기 위해). 닷넷에서도 똑같이 작동하므로 도트가 줄 바꿈과 일치하는지 또는 서버 또는 클라이언트에 정규식을 적용할지 여부에 대해 걱정할 필요가 없습니다.

+0

JavaScript 지원에 대한 좋은 점은이 테스트가 클라이언트와 서버 측에서 실행되기 때문에 좋은 점입니다.이 접근 방식을 사용할 것입니다. – Josh

1

대괄호 안에 마침표를 리터럴로 처리하고 있습니다. 원하는 것 :

^(.|\n){2,40}$ 
+0

'\ n'은 2 문자로 계산됩니다. 따라서 멀티 라인 텍스트 상자에 40 자 제한이있는 경우 사용자는 '\ n'이있는 경우에만 38자를 입력 할 수 있습니다. 또한 캐리지 리턴 ('\ n') 만 입력하면 아무 것도 실제로 입력되지 않은 경우에도 2 문자의 하한이 지나치게됩니다. – Kelsey

+0

@Kelsey : 텍스트 상자에 'Enter'키를 누르면 캐리지 리턴 * 및 * 줄 바꿈 (CRLF)이 삽입되지 않습니까? 그래서'.'는 CR과 일치하고'\ n'은 LF와 일치합니다; 아무것도 두 번 계산되지 않습니다. –

+0

2 줄로 계산되는 새로운 라인의 좋은 점 – Josh