2016-10-26 5 views
0

Я создал RegEx для наших нужд - написал мой UnitTest, и после его передачи я хотел обновить свой FrontEnd до нового RegEx, но RequiredFieldValidator SomeHow не соответствует той же строке, что и UnitTest делает.RegularExpressionValidator ведет себя иначе, чем UnitTest RegEx

Вот UnitTest, который проходит свободно:

[TestMethod] 
    public void BasicTest() 
    { 
     using (ShimsContext.Create()) 
     { 
      var basicUnicodeRegEx = new Regex(@"^(?:(?:\p{IsBasicLatin}|\p{IsLatin-1Supplement}|\p{IsLatinExtended-A}|\p{IsLatinExtended-B}|\p{IsIPAExtensions}|[\u0302\u030C]|\p{IsLatinExtendedAdditional}){2,}[*]?)$"); 

      var isMatchString = "Floriân-D̂îétrich Wäß[email protected] 1823*"; 
      var IsNotMatchString = "べξぺき"; 
      Assert.IsTrue(basicUnicodeRegEx.IsMatch(isMatchString)); 
      Assert.IsFalse(basicUnicodeRegEx.IsMatch(IsNotMatchString)); 
     } 
    } 

И это мои управления ASP, которые просто не любят точно такую ​​же строку, ни даже основной AZ один:

<asp:TextBox runat="server" ID="edtNachname"></asp:TextBox> 
<asp:RegularExpressionValidator ID="rev_Nachname" runat="server" ControlToValidate="edtNachname" ErrorMessage="nope" ValidationExpression="^(?:(?:\p{IsBasicLatin}|\p{IsLatin-1Supplement}|\p{IsLatinExtended-A}|\p{IsLatinExtended-B}|\p{IsIPAExtensions}|[\u0302\u030C]|\p{IsLatinExtendedAdditional}){2,}[*]?)$"> 

         </asp:RegularExpressionValidator> 

Что происходит Вот? : О

ответ

0

Есть два важных разница:

  • Валидатор использует javascript для проверки i n в браузере - поэтому вы ограничены движком regex в javascript.
  • Валидатор подходит только в том случае, если целых соответствует строке, это как если бы образец был окружен ^ и $.

С вашим \p{IsBasicLatin}, я подозреваю, что первый пункт - ваша проблема. Вы можете установить, что валидация работает на стороне сервера только для использования механизма регулярного выражения .Net, но для этого требуется обратная передача.

Смежные вопросы