我正在尝试验证一个数字正好15位数,其中5位数由"-",":","/"分隔,应该以5或4或37开头,它也不应该包含任何字符。
意思是
37344 - 37747 - 27744-有效
40344 - 37747 - 27744-有效
59344 - 37747 - 27744-有效
37344:37747:27744-有效
37344/37747/27744-有效
87887 - 98734 - 83422-无效
548aa:aa764:90887-无效
37759\29938\92093-无效
我只能走这么远
\d{5}[-:\/]\d{5}[-:\/]\d{5}
请帮帮我。
5条答案
按热度按时间q8l4jmvw1#
试试这个:
https://regex101.com/r/VvTq5P/1
我还要补充一点:
\b
在开始和结束时:所以不是这样的:
可以通过测试。
gfttwv5a2#
你可以使用look ahead
(?=.)
来首先检查你的字符串是否以数字5|4|37
开头,这是要求,下面是完整的模式:Demo here
cwtwac6a3#
如果我理解正确的话,正则表达式是:
需要
4XXXX、5XXXX或37XXX
所以我把它分成三份
ee7vknir4#
(五|4)\d {4}-查找以5或4开头且其后为四位数字的数字。
然后,或37\d {3}查找37和其后的三位数字。
jtoj6r0c5#
如果分隔符必须相同:
^
字符串开始(?=37|[54])
正向前瞻,向右Assert37
或5
或4
\d{5}
匹配5位数字([-:\/])
捕获组1,匹配-
:
/
之一\d{5}
匹配5位数字\1
反向引用以匹配与组1中相同的分隔符\d{5}
匹配5位数字$
字符串结束参见regex101 demo。
使用交替而不进行环视的模式:
参见regex101 demo