2016-06-18 7 views
0

У меня есть текстовое поле, в котором должны быть пять цифровых символов, за которыми следуют 3 буквы, которые будут соответствовать тому, что было выбрано в выпадающем списке. Это способ, которым я имею это проверить:RegularExpressionValidation - есть ли лучший способ написать это?

 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

Этот код работает отлично, но я чувствую, что должен быть более простой способ, чтобы закодировать это. возможно, я ошибаюсь, и это самый простой способ, но мне просто интересно.

+0

Шаблон для регулярного выражения - это строка. Поэтому используйте @ "\ d {5}" + ddlLegalEntity.SelectedItem.Text – jdweng

ответ

0

Может быть что-то вроде:

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

и более эффективного использования string.Format (строка, Params) для этих целей;

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