регулярное выражение для четырех имен - PullRequest
0 голосов
/ 26 апреля 2011

Я хочу сделать проверку имени, чтобы заставить пользователя ввести свое имя в четырех разделах (четыре имени).Как сделать это на стороне клиента, используя проверку asp.net?

<td style="text-align: right;" class="style1">
    <asp:TextBox ID="txt_addName" runat="server" Width="220px" ValidationGroup="add"></asp:TextBox>
    <cc1:TextBoxWatermarkExtender ID="txt_addName_TextBoxWatermarkExtender" 
        runat="server" Enabled="True" TargetControlID="txt_addName"
        WatermarkText="أدخل اسم المحاضر رباعيا" WatermarkCssClass="watermark">
    </cc1:TextBoxWatermarkExtender>
    &nbsp;
    <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" 
         ControlToValidate="txt_addName" Display="Dynamic" ErrorMessage="!"     
         ValidationGroup="add"></asp:RequiredFieldValidator>
    <asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ErrorMessage="*"
        ValidationExpression="^(?:\p{L}+\s+){3}\p{L}+$" ControlToValidate="txt_addName"
        Display="Dynamic" ValidationGroup="add">يجب أن يكون اسم المحاضر رباعيا 
    </asp:RegularExpressionValidator>
</td>
<td style="text-align: center; width: 550px;">
     <asp:Button ID="btn_addNewLecterer" runat="server" Font-Bold="True" Font-Names="Garamond"
          Font-Size="Medium" Text="أضف محاضر جديد" OnClick="btn_addNewLecterer_Click" ValidationGroup="add" />
</td>

Ответы [ 3 ]

5 голосов
/ 26 апреля 2011

Что-то вроде этого должно работать:

^(?:\p{L}+\s+){3,}\p{L}+\s*$

Объяснение:

^      // start at the beginning of the string
(?:    // start a non-capturing group
\p{L}  // match any unicode letter...
+      // ...at least one of them...
\s+    // ...followed by at least one white-space character
)      // end the non-capturing group
{3,}   // repeat the group at least three times
\p{L}+ // finish with at least one unicode character...
\s*    // ...that can optionally be followed by white-space...
 $     // ...and then the string should end

Если вы хотите ограничить выражение точно четырьмя секциями (я интерпретировалвопрос требует не менее четыре), вы меняете его на:

^(?:\p{L}+\s+){3}\p{L}+$
2 голосов
/ 26 апреля 2011

Вы бы хотели что-то вроде этого:

^\w+\s\w+\s\w+\s\w+$

Вы хотите использовать + вместо *, потому что вам нужен хотя бы один из них.

Используйте \w, потому что вы хотите поймать все символы слова, а не только буквы a-z

Вы также можете использовать буквенные пробелы вместо класса \s, если вы не указали явно, что хотите, чтобы ваш шаблон игнорировал пробелы, поэтому:

^\w+ \w+ \w+ \w+$

* * * * * * * * * * * * * * * * * * *1015*. Считается так же, как и табуляция.

И, как отметил Фредерик, до тех пор, пока у вас включена проверка на стороне клиента для элемента управления проверкой, такой простой регулярный оператор будет работать и на стороне клиента.

1 голос
/ 26 апреля 2011

Вы можете попробовать программы для создания регулярных выражений, такие как Regex Buddy, чтобы создать свои собственные правила.Вот простая, которая позволит использовать только четыре части имени (все маленькие буквы), разделенные пробелами

^[a-z]*\s[a-z]*\s[a-z]*\s[a-z]*$

Вы можете уточнить и использовать это как основу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...