2014-12-02 56 views
1

我试图制定一个正则表达式来在一定长度匹配字符串,但不计算“ - ”字符(但可能有不止一个正则表达式:固定长度不考虑“ - ”考虑

例如:

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

期望的结果:。

123-45 
12345 
+0

你能否清楚地解释你的问题。 – 2014-12-02 13:55:02

回答

2

要匹配5位的话,允许任何数目的插入,但不是前/后,破折号:

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

demo显示匹配每个:

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

但是没有:

1234a5 123456 1234 -12345 123-45- 
0

你并不需要一个正则表达式在这里你可以做下面这是伪代码

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

只是删除每一个-,然后再检查length

+0

我需要一个正则表达式。为什么?因为这对我更容易。例如,我也过滤了一些字符(数字),我从一个长字符串中提取了一组有效序列(它们之间有一些分隔:利润,跳转线等)。我知道,你可以用代码做任何事情,所以直到现在,它不是很好。你的答案是在正则表达式中是不可能的? – dovid 2014-12-02 14:01:11