验证银行排序代码

本文关键字:代码 排序 验证 | 更新日期: 2023-09-27 18:15:06

格式为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;
            }

验证银行排序代码

您给出的正则表达式将只匹配确切的字符串"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对银行排序代码有效。

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

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

最简单的方法是:

^'d'd-'d'd-'d'd$

看一看:

http://tinyurl.com/pjq5a56

try use {n}来声明位数

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

{n,m}如果你有一个可能的数字范围

{n,m} m和n为非负整数。匹配至少n次,最多m次。例如,"o{1,3}"匹配"fooooood"中的前三个o。"o{0,1}"等价于"o?"

使用^'d{2}-'d{2} $

更改正则表达式

您可以使用以下表达式来测试两种情况(带和不带破折号):

^               # 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

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