验证银行排序代码
本文关键字:代码 排序 验证 | 更新日期: 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
是正确的,而1234
和12-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/pjq5a56try 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
。