匹配4位数字存在于字符串中

时间:2018-05-31 12:59:24

标签: c# regex

好的,所以这是众多正则表达式问题中的一个,我搜索时没有找到答案。

我想知道字符串是否包含四位数字,但数字不是整个字符串。它也必须在5位数字上失败。

所以,这就是我今天所拥有的:\d{4}[^\d] 这适用于我的大多数情况,但如果四位数字位于字段的末尾则会中断。

实施例

#3333, INC343334    => I want 3333
dddd                => I want no match
3333                => I want 3333
RT4323, INC33334434 => I want 4323
INC23455667, #3333  => I want 3333

1 个答案:

答案 0 :(得分:1)

你可以使用负向前瞻和负后瞻来测试你的4位数字是否被其他数字包围:

(?<!\d)\d{4}(?!\d)

这不符合过滤由四位数字组成的字符串的要求。我建议单独使用这个过滤器,比如这个psuedocode:

regex = /(?<!\d)\d{4}(?!\d)/;
strings.filter(s -> s.length != 4).filter(s -> regex.find(s).matches())