1

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

6 回答 6

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 对银行排序代码有效。

于 2013-05-23T14:18:56.147 回答
1

最简单的方法是:

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

看一看:

http://tinyurl.com/pjq5a56

于 2013-05-23T14:16:52.927 回答
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) 
                            });
}
于 2013-05-23T14:22:09.147 回答
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

于 2013-05-23T14:29:08.570 回答
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?”。

于 2013-05-23T14:19:12.257 回答
0

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

于 2013-05-23T14:22:12.923 回答