格式为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;
}
答案 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
是正确的,而1234
和12-34-5
不正确。
使用[0-9]
代替\d
的原因是\d
将匹配其他语言和字符集中的数字,但只有0-9对银行排序代码有效。
答案 1 :(得分:1)
答案 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
。