Regex 忽略空格和破折号,只捕获特定长度的数字

Regex 忽略空格和破折号,只捕获特定长度的数字,regex,Regex,我有一个场景,其中我有一个包含一系列数字、空格或破折号的字符串。我想捕捉长度仅在14到16之间的数字组。我尝试了以下各种组合 1. [0-9](?:[- ]?){14,16} 2. [0-9]([- ]?){14,16} 3. [0-9]{15,16}|[0-9]{4}.?[0-9]{4}.?[0-9]{4}.?[0-9]{3,4}|[0-9]{4}([\\ \\-]?)[0-9]{4}\1[0-9]{4}[ ]?[-]?[ ]?[0-9]{3,4}|[0-9]{14}|[0-9]{4}(

我有一个场景,其中我有一个包含一系列数字、空格或破折号的字符串。我想捕捉长度仅在14到16之间的数字组。我尝试了以下各种组合

 1. [0-9](?:[- ]?){14,16}
 2. [0-9]([- ]?){14,16}
 3. [0-9]{15,16}|[0-9]{4}.?[0-9]{4}.?[0-9]{4}.?[0-9]{3,4}|[0-9]{4}([\\ \\-]?)[0-9]{4}\1[0-9]{4}[ ]?[-]?[ ]?[0-9]{3,4}|[0-9]{14}|[0-9]{4}([\\ ?|\\-?]?)[0-9]{4}\1[0-9]{4}\1[0-9]{4}
我的输入字符串是我的数据包含字符串34567892345567或3456789234556734或345678923455634和34 5678 92345-567或34-567 8923--4556-734或34567-8923 455634

唯一的常量是后续数字的长度,如14、15或16。我的输出应该捕获以下组

 1. 34567892345567
 2. 3456789234556734
 3. 345678923455634
 4. 34 5678  92345-567
 5. 34--567   8923---4556-734
 6. 34567-8923 455634

请推荐一个正则表达式来捕捉上面的组。

您正在围绕它跳舞

([0-9][- ]*){14,16}
说明:

__________{14,16}14到16次。。。 _[0-9]uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。。。 ______[-]*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

注意:这将包括结尾处的空格和连字符,但不包括开头处的空格和连字符。要在开头包含空格和连字符,请使用:

[- ]*([0-9][- ]*){14,16}
要排除结尾处的空格和连字符,请使用:

([0-9][- ]*){13,15}[0-9]

我将使用以下模式:

(\d[ -]*?){14,16}
确保包括以下内容:?以使其不贪婪的模式。这样,您的捕获组就不会包含尾随空格


谢谢。我希望正则表达式在结尾处排除空格和连字符。