2010-12-13 3 views
0

파일 업로드를 확인하는 다음 표현식을 사용하여 asp : regularexpressionvalidator가 있습니다.디버깅 RegularExpressionValidator 컨트롤

\.{1}x?html?$ 

Expresso가 작동한다는 것을 알 수 있습니다. 아래의 간단한 html 테스트 페이지는 작동하지만 응용 프로그램에서 파일 입력에 html 파일을로드하면 항상 유효성 검사기가 트리거됩니다.

누구나이 컨트롤의 javascript 디버깅에 대한 아이디어 나 요령이 있습니까?

감사합니다, 샘

제어 :

<asp:RegularExpressionValidator ID="validRegexHtmlOnly" runat="server" ControlToValidate="fileImportHTML" 
     ValidationExpression="\.{1}x?html?" ErrorMessage="The file must be an HTML document (.html, .htm, .xhtml)" Display="Dynamic" /> 

간단한 테스트 페이지 :

<html> 
<head> 
<script type="text/javascript"> 
function validate(){ 
var txt = document.getElementById("txtInput").value; 
alert(/\.{1}x?html?$/.test(txt)); 
} 
</script> 
</head> 
<body> 
<input type="file" id="txtInput" /> 
<input type="button" onclick="validate()" value="click me" /> 
</body> 
</html> 

답변

0

RegularExpressionValidator의 정규식은 끝 (또는 시작 부분 등)이 아닌 전체 문자열과 일치해야한다고 생각합니다. 의 {1} 유용한 아무것도하지 않은 보조 노트에

.*\.x?html? 

에 정규식을 변경하려고, 그래서 그것을 제거. 정규식에서 중 하나를 일치시킬 필요는 없습니다. 이것이 기본 동작입니다. 그리고 {1}이 더 첨부 된 것보다과 일치하지 않을 것입니다. 그것은 당신의 정규식을 어수선하게하는 것입니다.

+0

당신의 대답이 나타 났을 때 나는 단지 스스로에게 질문에 답하고 있었다. 나는^\ S +? \. {1} x? html? $로 일하고있다. 당신의 작품도 마찬가지입니다. 그래서 당신은 시가를 얻습니다! – Nostradamnit

+0

컨트롤을 대소 문자를 구분하지 않는 옵션 인 대소 문자를 구분하기 위해 실제로 RegEx를 수정해야했습니다 ... ^. * \. [xX]? [hH] [tT] [mM] [1L] ? $ 누군가가 더 효율적인 것을 가지고 있지 않으면, RegEx의 최종 작업입니다. :) – Nostradamnit

0

내 추측은 당신이 파일 이름의 끝에 공백을 받고 있다는 점이다. 그것이 웹 페이지에서 어떻게 일어날 지 확신 할 수 없지만, 내가 생각할 수있는 유일한 것입니다.

+0

나는 $없이 시도했지만 아무 것도 바뀌지 않았다. ( – Nostradamnit