如何编写一个接受10或14个数字的正则表达式,这些数字以1、2或3个数字为一组,用一个空格分隔?
示例:123 45 6 789 1 is valid
1234 567 8 9 1 is not valid
(4位一组(123 45 6 789 109 123 8374 is not valid
(不是10或14位(
编辑这是我迄今为止尝试过的
[0-9 ]{10,14}+
但它也验证了11、12、13个数字,并且不检查数字组
您可以将此regex与前瞻断言一起使用:
^(?=(?:d ?){10}(?:(?:d ?){4})?$)d{1,3}(?: d{1,3})+$
RegEx演示
- 这里
(?=...)
是前瞻断言,它强制输入中存在10或14位数字 d{1,3}(?: d{1,3})+
用1到3个用空格分隔的数字匹配输入,在开始或结束时不允许有空格
aggtr,
您可以将您的用例与以下内容相匹配:
^(?:ds?){10}$|^(?:ds?){14}$
^表示字符串的开头,$表示字符串的结尾。(?:…(表示非捕获组。因此,|之前的部分表示一个开始的字符串,它有一个非捕获组,后面跟着一个可选的空格,后面紧跟着字符串的末尾,正好有10个项目。通过放置|,您可以为您的模式设置10或14。
编辑我错过了您要求的按1、2或3位数字分组的部分。