验证银行排序代码

时间:2013-05-23 14:15:31

标签: c#

格式为XX-XX-XX(其中X =数字)。如果输入时没有破折号,请相应地格式化。如果缺少任何数字(例如01-2-22或11556),则应显示警告以检查详细信息。请告知如何验证此

三江源

          string str_sortcode = txt_sortcode.Text;
            Regex r = new Regex(@"12-22-34");
            Match match1 = r.Match(str_sortcode);
            if (match1.Success)
            {

            }
            else
            {
                MainContent_updPanelError.Visible = true;
                lblerrr.Visible = true;
                lblerrr.Text = "Please enter a valid Bank Sort Code. For example: 12-22-34";
                return false;
            }

6 个答案:

答案 0 :(得分:2)

您提供的正则表达式只会匹配确切的字符串"12-22-34"

您的正则表达式应该类似于:

@"\b[0-9]{2}-?[0-9]{2}-?[0-9]{2}\b"

匹配3组2位数,可选择用连字符分隔但不包含其他字符。

如果要自动添加破折号,则将表达式更改为:

@"\b([0-9]{2})-?([0-9]{2})-?([0-9]{2})\b"

并使用Regex.Replace作为替代:

@"$1-$2-$3"

这将转为123456 - > 12-34-56,并验证12-34-56是正确的,而123412-34-5不正确。

使用[0-9]代替\d的原因是\d将匹配其他语言和字符集中的数字,但只有0-9对银行排序代码有效。

答案 1 :(得分:1)

最简单的方法是:

^\d\d-\d\d-\d\d$

看看:

http://tinyurl.com/pjq5a56

答案 2 :(得分:1)

你的正则表达式错了。如果您想接受有或没有破折号,请将其更改为:

Regex r = new Regex(@"\d{2}-\d{2}-\d{2}|\d{6}");

之后添加破折号:

if (!str_sortcode.Contains("-"))
{
    str_sortcode = string.Join(
                            "-", 
                            new[] { 
                                str_sortcode.Substring(0, 2), 
                                str_sortcode.Substring(2, 2), 
                                str_sortcode.Substring(4, 2) 
                            });
}

答案 3 :(得分:0)

尝试使用{ n }来声明位数

  

{n} n是非负整数。正好匹配n次。例如,“o {2}”与“Bob”中的“o”不匹配,但匹配“foooood”中的前两个o。

{ n,m }如果你有一系列可能的数字

  

{n,m} m和n是非负整数。匹配至少n次,最多m次。例如,“o {1,3}”匹配“fooooood”中的前三个o。 “o {0,1}”相当于“o?”。

答案 4 :(得分:0)

使用^ \ d {2}更改正则表达式 - \ d {2} - \ d {2} $

答案 5 :(得分:0)

您可以使用以下表达式来测试两种情况(使用和不使用短划线):

^               # Start of the string
(\d{2}          # Followed by a group of two digits
(-\d{2}){2})    # Followed by two groups of the form: -<digit><digit>
|\d{6}          # OR 6 digits
$               # End of the string

如果您从上方复制模式,请不要忘记在创建RegexOptions.IgnorePatternWhitespace实例时使用Regex