C# 6或8位的正则表达式
有人能帮我用C#正则表达式来满足下面的要求吗C# 6或8位的正则表达式,c#,regex,C#,Regex,有人能帮我用C#正则表达式来满足下面的要求吗 应以1开头,长度应为6位 应以7开头,长度应为6位 长度应为8位 更新: 道歉没有澄清要求。它们是个别情况,即我所需要的只是这些特定情况的正则表达式(即总共3个)。这里是: ^((1|7)\d{5}|\d{8})$ 或在NullUserException之后ఠ_ఠ 忠告: ^([17]\d{5}|\d{8})$ 不是正则表达式,现在验证正确的整数并将其保存到输出中: string digits = ... bool valid; char fir
^((1|7)\d{5}|\d{8})$
或在NullUserException之后ఠ_ఠ 忠告:
^([17]\d{5}|\d{8})$
不是正则表达式,现在验证正确的整数并将其保存到
输出中
:
string digits = ...
bool valid;
char firstChar;
int output;
switch(digits.Length)
{
case 6:
firstChar = digits[0];
valid = firstChar == '1' || firstChar == '7';
break;
case 8:
valid = true;
break;
default:
valid = false;
break;
}
if (valid && int.TryParse(digits, out output))
{
...
}
它不能满足所有这些要求:)这是非常具体的要求。您能给出一些您想要匹配的示例吗?我还将介绍一种非正则表达式方法,特别是当它是需要性能调优的代码的一部分时。手工编写的微调方法将在100次中超过等价正则表达式99次。从可维护性的角度来看,非正则表达式代码可能更容易理解。嗨@Jason McCreary,我已经更新了我的需求。+1。除非我们还不知道(8位数长)条件是否包括以1和7开头的条件。你确定这不是正则表达式吗?为什么不
bool valid=Regex.IsMatch(digits,@“^([17]\d{5}\d{8})$”
而不是13行代码(这是错误的)@NullUserExceptionఠ_ఠ, 现在它是这样的,当你做的时候,你得到了实际的整数。现在它是好的,但是它需要被重写,以防在某种原因下,8位数的限制会增加到10@zerkms,如果需要,它可以使用很长的时间