3

時間を検証しようとしています

00:00 to 11:59 ends with AM OR PM

私はいくつかの正規表現を試していましたが、時間を検証することに成功しませんでした。私のJavaスクリプト関数は

function verifydata( incoming ) {
var re = (1[012]|[1-9]):[0-5][0-9](\\s)?(?i)(am|pm);
if(incoming.time.value != '' && !incoming.time.value.match(re)) 
{
alert("Invalid time format: " + incoming.time.value);
}
}

動いていない

私もこれを試しましたが、動作しませんでした

var re = /^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/;

どこが間違っているのか教えてください。

4

3 に答える 3

-1

私はすべての正規表現が好きというわけではありません。特に、数値範囲については嫌いです。

関数の書き方に多少の側面があると仮定します。

 // regex used for "high level" check and extraction
 // matches "hh:mmAM", "hh:mm", "hh:mm PM", etc
 var matches = inp.match(/^(\d\d):(\d\d)\s?(?:AM|PM)?$/)
 if (matches && matches.length == 3) {
   var h = parseInt(matches[1], 10)
   var m = parseInt(matches[2], 10)
   // range checks done in code after getting numeric value
   return h >= 1 && h <= 12 && m >= 0 && m <= 59
 } else {
   return false
 }
于 2013-07-22T22:25:21.107 に答える