1到999之间的值的正则表达式,包括0个前缀值



我想创建一个接受如下字符串的正则表达式:

DXXX HH: mm

,其中XXX是1到999之间的数字,但它也可以接受0前缀的数字,如01和001,但它不能接受例如0001,其中总长度>3

HH:mm为小时和分钟,采用24h格式。

接受值示例:D001 14:01D999 00:00

我写了第二部分,即:/^(2[0-3]|[0-1][d]):[0-5][d]$/

对于第一部分:^d{1,3}$,但这接受0,00000

如何解决这个问题?

让我们保持简单:

re = String.raw`
^
D
(                          # numeric group
[1-9] [0-9]? [0-9]?    # 1 or 12 or 123
|                      # or
0 [1-9] [0-9]?         # 01 or 012
|                      # or
00 [1-9]               # 001
)
x20  # space
(                    # hours
2 [0-3]          # 20..23      
|                # or
[0-1] [0-9]      # 00...19
)
:
(                    # seconds
[0-5] [0-9]      # from 00 to 59
)
$
`
re = new RegExp(re.replace(/#.*|s+/g, ''))
console.log(re)
console.log(re.test('D001 23:11'))
console.log(re.test('D011 23:11'))
console.log(re.test('D111 23:11'))
console.log(re.test('D0 23:11'))
console.log(re.test('D00 23:11'))
console.log(re.test('D000 23:11'))

const regex = /^D(?:0d?[1-9]|[1-9]{1,3}) [0-2]d:[0-5]d$/
console.log(regex.test("D001 14:01"))
console.log(regex.test("D999 00:00"))
console.log(regex.test("D000 00:00"))
console.log(regex.test("D00 00:00"))
console.log(regex.test("D0 00:00"))
console.log(regex.test("D001 00:00"))
console.log(regex.test("D01 00:00"))
console.log(regex.test("D011 00:00"))

相关内容

  • 没有找到相关文章

最新更新