2012-06-22 3 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

Вам нужно бежать / в середине.

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

Кроме того, почему вы не позволили 2012 году быть годным?

+0

Это будет соответствовать '91/72/9123'. Похоже, что OP признал, что: -? –

0

Вам необходимо избегать / в середине рисунка. Сделайте их \/.

0

Чтобы использовать слэш в регулярном выражении, они должны быть экранированы:

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

На соответствующую записку, вы можете использовать \ д представлять любую цифру:

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

Ну, как может вы сопоставляете год 2012 с [1-9]{4}, когда есть 0 в yyyy?

Использование регулярных выражений /\d{2}\/\d{2}\/\d{4}/ можно разделить дату на номера, но ...

Вы должны использовать JavaScript Date Validation вместо этого.

Смежные вопросы