【问题标题】:RegularExpressionValidation - is there a better way to write this?RegularExpressionValidator - 有没有更好的方法来写这个?
【发布时间】:2016-06-18 19:59:29
【问题描述】:

我有一个文本框,要求它是五个数字字符后跟 3 个字母,这将与下拉列表中选择的内容相匹配。这是我检查的方式:

        protected void ddlLegalEntity_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddlLegalEntity.SelectedItem.Text == "FID")
        {
            RegularExpressionValidator1.ValidationExpression = "^[0-9]{5}(FID)$";
        }
        else if (ddlLegalEntity.SelectedItem.Text == "FLM")
        {
            RegularExpressionValidator1.ValidationExpression = "^[0-9]{5}(FLM)$";
        }
        else if (ddlLegalEntity.SelectedItem.Text == "FOF")
        {
            RegularExpressionValidator1.ValidationExpression = "^[0-9]{5}(FOF)$";
        }

然后如果.......

因此,如果在 ddlLegalEntity 中选择 FLM,则文本框必须等于五个数字,后跟 FLM。

比如……

13423FLM

56543FLM

这段代码运行良好,但我觉得必须有更简单的方法来编写代码。也许我错了,这是最简单的方法,但我只是好奇。

【问题讨论】:

  • 正则表达式的模式是一个字符串。所以使用@"\d{5}" + ddlLegalEntity.SelectedItem.Text

标签: c# asp.net regex


【解决方案1】:

可能是这样的:

     protected void ddlLegalEntity_SelectedIndexChanged(object sender, EventArgs e)
{
     RegularExpressionValidator1.ValidationExpression = "^[0-9]{5}("+ddlLegalEntity.SelectedItem.Text+")$";
}

最好使用 string.Format(string, params) 来达到这个目的;

        private static readonly string validationRegEx= "^[0-9]\{5\}({0})$";
        String.Format(validationRegEx, ddlLegalEntity.SelectedItem.Text);

【讨论】:

    猜你喜欢
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-14
    相关资源
    最近更新 更多