2012-06-22 4 views
-3

이 정규식에 어떤 문제가 있습니까? 그것은 당신이 중간에 /을 탈출 할 필요가정규 표현식 날짜

var patt = /[0-9]{2}/[0-9]{2}/[1-9]{4}/; 

if(patt.test(document.getElementById('date').value) == false){ 
    document.getElementById("errorTxt").innerHTML = "Error"; 
    return false; 
} 
+0

"작동하지 않을 것입니다"는 설명이 너무 모호하여 유용하지 않습니다. 실제 행동에 대해 기대하는 바를 기재하십시오. –

+3

JS 마법사가 아닌 것은 확실하지만 91/72/9123은 유효하고 10/02/2001은 유효하지 않은 것으로 간주됩니다 (연도에 0을 허용하지 않음). 정규식이 최선의 방법이 아닐 수도있는 이유에 대해 [여기] (http://www.codinghorror.com/blog/2008/06/regular-expressions-now-you-have-two-problems.html)를보십시오. 이의. –

+0

날짜 확인에 신경 쓰지 않아도됩니다. -? –

답변

0

작동하지 않습니다.

왜 2012 년을 유효한 연도로 허용하지 않았습니까?

+0

이것은 '91/72/9123'과 일치합니다. OP가 그것을 받아 들인 것처럼 보입니다 : -? –

0

패턴 중간에 /을 탈출해야합니다. 그들을 \/로 만드십시오. 정규 표현식 내에서 슬래시를 사용하려면

0

는, 그들은 탈출해야합니다

관련 메모에
var patt = /[0-9]{2}\/[0-9]{2}\/[1-9]{4}/; 

, 당신은 어떤 자리 표현하기 위해 \ d를 사용할 수 있습니다 :

var patt = /\d{2}\/\d{2}\/\d{4}/; 
0

글쎄, 어떻게 2012[1-9]{4}으로 일치 시키십시오. 0yyyy 일 때?

당신이 번호로 날짜를 분할 할 수 있습니다 /\d{2}\/\d{2}\/\d{4}/ 정규식을 사용하여,하지만 ...

대신 JavaScript Date Validation를 사용해야합니다.