具有约束的正则表达式,前瞻功能

时间:2016-09-30 14:17:57

标签: regex

我试图写一个介于10到12位之间的正则表达式。在{0,5}之间将有可选的前导0(零),然后是10-12位之间的数字字符串。无论零的数量(0到5),我想在前导零后10-12位数

示例:

0000012345 should not be passing 
0012345678 should not be passing as there are only 8 digits after leading zeros

我试过了:

^(0{0,5}(?=\d{10,12}$)^\d{1,2}?\s?(\d{10})$

2 个答案:

答案 0 :(得分:0)

^0{0,5}+\d{0,2}\s?\d{10}$

       ^^

你没有指定语言。你需要possessive quantifier

参见演示。

https://regex101.com/r/m5sOAJ/1

或者如果你的正则表达式不支持possessive quantifiers

^(?=(0{0,5}))\1\d{0,2}\s?\d{10}$

参见演示。

https://regex101.com/r/m5sOAJ/3

答案 1 :(得分:0)

我认为

^0{0,5}[1-9]\d{9,11}$

应该是你需要的。它强制不将前导零计数为后面的数字之一,要求它为非零。然后可以有9-11个其他数字(包括0)。

如果您需要在任何时候包含可选空间(根据您的RegEx建议),RegEx会增长很多,并且使用一些额外的代码可能更容易。但是,如果您给出了确切的要求,我会相应地编辑答案。