正则表达式:固定长度而不考虑“ - ”

时间:2014-12-02 13:41:06

标签: regex

我正在尝试制定一个正则表达式来匹配具有一定长度的字符串,但不计算“ - ”字符(但可能有多个。

例如:

123-45 12345 123456 abc 123a4... (very long string)

期望的结果:

123-45
12345

2 个答案:

答案 0 :(得分:2)

要匹配5位数字,允许任意数量的介入,但不是前导/尾随,破折号:

(?<!-)\b(\d-*){4}\d\b(?!-)

请参阅显示以下各项的demo

123-45 12345 1-2-3-4-5 1----2345

但没有:

1234a5 123456 1234 -12345 123-45-

答案 1 :(得分:0)

你不需要这里的正则表达式。您可以执行以下伪代码。

var len = str.replace("-", "").length;
if(len > 5 || len < 7){
  // valid
}

只需删除每个-,然后检查length