Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 只有当组的长度与指定的长度完全一致时,才有方法返回组吗?_C#_Regex - Fatal编程技术网

C# 只有当组的长度与指定的长度完全一致时,才有方法返回组吗?

C# 只有当组的长度与指定的长度完全一致时,才有方法返回组吗?,c#,regex,C#,Regex,下面的正则表达式 (\d{3,4}) 匹配中的1234 123456,但由于123456的长度大于4,因此我不希望正则表达式匹配任何内容 这是我单独使用的3个正则表达式,我尝试组合它们,但它返回2个以上的组,我最多只需要2个 //Match card number before security code (?<!\d)(\d{13,16})(?!\d)[<""'].*?(?=[>""']\d{3,4}[<""'])[>""'](?<!\d)(\d{3,4}

下面的正则表达式

(\d{3,4})
匹配中的
1234

123456
,但由于
123456
的长度大于4,因此我不希望正则表达式匹配任何内容

这是我单独使用的3个正则表达式,我尝试组合它们,但它返回2个以上的组,我最多只需要2个

//Match card number before security code
(?<!\d)(\d{13,16})(?!\d)[<""'].*?(?=[>""']\d{3,4}[<""'])[>""'](?<!\d)(\d{3,4})(?!\d)[<""']

//Match card number after security code
(?<!\d)(\d{3,4})(?!\d)[<""'].*?(?=[>""']\d{13,16}[<""'])[>""'](?<!\d)(\d{13,16})(?!\d)[<""']

//Match just card number
(?<!\d)(\d{13,16})(?!\d)
//在安全码之前匹配卡号

(?“”]\d{13,16}[使用\b标记字符串的开头和结尾,a la

\b\d{3,4}\b

试试这个:
(\b\d{3,4}\b)
这个
\b
字符表示单词边界。如果你只需要任何非数字字符,试试
\d(\d{3,4})\d
是的

(?<!\d)(\d{3,4})(?!\d)
如果你愿意的话


(?!regex)

零宽度负向前看。与正向前看相同,只是只有在向前看内部的正则表达式无法匹配时,整体匹配才会成功


但是如果valid是
aaa1234bbbb
的话就有点麻烦了。这个答案很好,也很简单,在我的情况下也会起作用,但正如sehe指出的,它有缺陷。比如eouw…的答案:对于像
aaa1234bbb
这样的有效输入不合适。这让我起初很困惑,但后来我明白了。基本上你回过头来看看,确保没有数字存在,对吗?我原来的正则表达式更复杂,但我不知道如何只返回2个组,即使我在表达式中指定了6个。我基本上想在groups@Xaisoft:请解释你的实际问题。你所说的“团体”是什么意思?@Xaisoft如果你更新了描述“组”是什么以及你所说的
是什么意思的问题,那么它会有所帮助。不管怎样,
(\d{4}\d{3})是否有帮助?甚至可能会重复并声明没有相邻的数字:
(??@sehe-我已经有一个问题,但是没有得到太多帮助。现在我使用三个正则表达式。下面是链接:
((?<!\d)\d{3,4}(?!\d))