从正则表达式中排除量化器

时间:2017-02-20 20:01:14

标签: regex

我有一个与5位数代码[0-9]{5}匹配的量词正则表达式。 如何排除上述量词的任何匹配?

我尝试了[^([0-9]{5})],但似乎无效。

测试数据如下:

包括:

12345678875645 (will be matched)
pppppaaaaa     (will be matched)
52p26          (will be matched)
123            (will be matched)

不包括:

12345          (won't be matched)

3 个答案:

答案 0 :(得分:2)

试试这个

^(\d{1,4}|\d{6,})$

这不会匹配5位数字

演示:https://regex101.com/r/sHvRMA/1

答案 1 :(得分:2)

您可以使用负面展望:

/(?!^[0-9]{5}$)^.+$/

var rexp = /(?!^[0-9]{5}$)^.+$/;
var str = ['12345', '12345678875645', 'pppppaaaaa', '52p26', '123'];
for (var i = 0; i < str.length; i++) {
  console.log(str[i] + ' - ' + (rexp.test(str[i]) ? 'matched' : 'did not match'));
}

答案 2 :(得分:1)

  

我认为您需要regex来匹配所有 5位长度

之外的所有内容

您只需使用否定前瞻声明排除5位数字。这就对了。

\b(?!\d{5}).+|.{6,}\b

它不包括仅5位