2012-06-11 2 views
0

필자는 자바 스크립트가 유효한 익스텐트를 호출 할 때 문제가 발생합니다. 필자는 서버 측 코드에서이 정규 표현식을 사용 했으므로 제대로 작동했습니다. reg 표현식이 검사하는 값이 유효하다는 것도 확인했습니다.올바른 익스텐션 이름에 대한 정규 표현식 검사

나는 reg 표현식을 잘못 선언 한 것일까?

var ck_name = /^.+\.((gdf)|(GDF))$/; 
var chldValue = chld.value.substring(chld.value.length - 4, chld.value.length); 
    alert(chldValue); 

    if (!ck_name.test(chldValue)) { 
     errors[errors.length] = "File is NOT a GDF file"; 
} 

답변

3

첫째, ^.+은 시간을 낭비하지 않습니다.

두 번째로, 문자열 길이는 4 자이고 찾고자하는 것은 5 자 이상이어야합니다. 결과적으로 그들은 절대로 일치하지 않을 것입니다.

셋째, 정규식이 과도합니다.

마지막으로, 코드는 다음과 같아야합니다

if(chld.value.substr(chld.value.length-4).toLowerCase() != ".gdf") 
    errors.push("File is NOT a GDF file"); 
+0

한 유일한 차이점은 당신이 혼합 된 경우를 수 있다는 것입니다. 왜 그것이 바람직하지 않은지 모르겠다. –

+0

이 점은 논점입니다. 모든 파일의 이름을 GDF 파일인지 여부에 관계없이'.gdf' 확장자로 변경할 수 있습니다. –

+0

역설적이게도 원래 코드는 잘 일치했을 것입니다. 단, 하위 문자열을 사용하지 않은 경우에는 일치하는 항목을 줄이면됩니다. 그래도 여기에 뭐가있어, 깨끗해. – jatrim