[英]time limit on regular expression in format MM:SS:HH
我需要以MM:SS:HH格式驗證用戶輸入的分鍾,秒鍾和百分之一。 但是,用戶的輸入不能超過10分鍾。 我不確定如何限制它,仍然保持例如01:01:01有效。
/ ^ [0-1] [0-0]:[0-5] [0-9]:[0-9] [0-9] $ /
這是我的表情,但是我的01:01:01示例無法正常工作。
我肯定會在:
上分割時間字符串,然后測試每個部分。 那是最簡單的解決方案。 另外,您可以使用regex相對容易地做到這一點。
const str = ["00:00:00", "05:05:05", "10:00:00", "10:00:01", "10:59:59", "20:20:20"]; str.forEach(function(s) { var a = s.split(":").map(Number); if(a[0] < 10 || (a[0] === 10 && a[1] === 0 && a[2] === 0)) { console.log(`Valid: ${s}`); } else { console.log(`Invalid: ${s}`); } });
const regex = /^(?:0\\d(?::[0-5]\\d){2}|10:00:00)$/; const str = ["00:00:00", "05:05:05", "10:00:00", "10:00:01", "10:59:59", "20:20:20"]; str.forEach(function(s) { if(regex.exec(s) !== null) { console.log(`Valid: ${s}`); } else { console.log(`Invalid: ${s}`); } });
我將僅在方法2中解釋正則表達式,因為其余部分非常簡單。 但是,如果您需要其他任何部分的說明,請隨時提出!
^
在行首處聲明位置 (?:0\\d(?::[0-5]\\d){2}|10:00:00)
匹配以下任意一個
0\\d(?::[0-5]\\d){2}
匹配以下內容
0
從字面上匹配 \\d
匹配任何數字 (?::[0-5]\\d){2}
精確匹配以下兩次
:
從字面上匹配 [0-5]
匹配一個介於0
到5
之間的數字 \\d
匹配任何數字 10:00:00
從字面上進行匹配 $
在行尾聲明位置 /(10:00:00|^0[0-9]:[0-5][0-9]:[0-5][0-9]$)/
['10:00:01', '10:00:00', '09:59:59', '05:05:05']
.forEach(t => console.log(t.match(/(10:00:00|^0[0-9]:[0-5][0-9]:[0-5][0-9]$)/)))
您的正則表達式已關閉。 只需將您的正則表達式更改為:
/^(10:00:00|0[0-9]:[0-5][0-9]:[0-9][0-9])$/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.