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))