JavaScript 正则表达式由 ( : ) individual max min calculation 分隔的两个字符串数字

标签 javascript jquery regex

我需要使用 Regex 验证 JavaScript 字符串,例如“03:39”。规则如下,

1.(:)之前的字符串的第一部分允许从0到24

2.(:)之后的字符串的第二部分允许从0到59

3.两个部分的个位数既可以以0开头,如01或02,也可以不以0开头,如1、2。

现在我已经编写了如下的 JavaScript 正则表达式代码。

var dateRegEx = /^n(0[0-2][0-4]|[0-24])(:)(0|[0-5][0-9]|[0-59])$/;
if ($(element).val().match(dateRegEx) === null) { 
// my rest of the code
}

现在,当用户插入 0:38、01:38 或 02:59 时,它会得到验证,但是当第一部分在 2 之后激怒时,比如 03:38,它不会验证字符串。 那我做错了什么??

最佳答案

对于小时,您当前的 0[0-2][0-4] 需要 三位 位数字(不能超过 4),而 [0-24] 将仅匹配一个 数字(0、1、2 或 4)。

相反,要匹配小时(00 到 24),您应该使用 (?:2[0-4]|[01]?[0-9]); 2 后跟 0 到 4 之间的数字,或者(可选)0 或 1 后跟任何其他数字。

要匹配分钟(00 到 59),请使用 [0-5]?[0-9] - 一个从 0 到 5 的可选数字,后跟一个从 0 到 9 的数字。

^(?:2[0-4]|[01]?[0-9]):[0-5]?[0-9]$

https://regex101.com/r/0QxX7w/1

请注意,如果您只是匹配单个字符,如 :,请不要将其放入字符集中。此外,由于您不希望在匹配开始时出现 n,因此请将其从模式的开头移除。

关于JavaScript 正则表达式由 ( : ) individual max min calculation 分隔的两个字符串数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54376201/

相关文章:

javascript - 更改 span 的文本,不影响 child

javascript - AngularJS x-可编辑的带条件的预输入

php - 正则表达式 - PHP

javascript - 如何在执行 PHP 时动态编码为 Base64 "preg_replace"

regex - 范围内的多行 vim 正则表达式替换

javascript - 如何在javascript中输入框为空时设置var something = 0

Javascript getTime() 提供令人困惑的结果

javascript - CSS 过渡与 JavaScript

jquery - 如何在 jQuery 对话框中验证 ViewModel?

javascript - 使用 javascript 变量的 Fire 方法