#c# #asp.net #regex #validation #textbox
#c# #asp.net #регулярное выражение #проверка #текстовое поле
Вопрос:
В моем asp.net приложение У меня есть одно текстовое поле, в котором я хочу разрешить значения, разделенные запятыми, например
name1,name1,name3
У меня есть одно регулярное выражение для проверки значений, т.Е. Одно значение ( name1
или name2
или name3
) должно удовлетворять регулярному выражению [a-zA-Z] [a-zA-Z0-9-_]*
.
Теперь я хочу проверить обе проверки, используя одно регулярное выражение
-
одно значение должно удовлетворять
[a-zA-Z] [a-zA-Z0-9-_]*
регулярному выражению -
В текстовом поле должны быть значения, разделенные запятыми.
Я не могу создать правильное регулярное выражение для этого.
Комментарии:
1. В a
textbox
вы можете вставлять значения, разделенные запятыми, без использования регулярного выражения. Обычно для проверки ввода используется регулярное выражение. Вы хотите, чтобы в ваш элемент управления вводом вставлялись только значения, разделенные запятыми?2. Это просто лениво. Вам просто нужно добавить
,?
перед текущим регулярным выражением и повторить все ваши регулярные выражения от 0 до n раз3. Зачем усложнять себе жизнь? Просто разделить
,
, обрезать пробелы, а затем просто проверить текущее регулярное выражение? Если у вас нет странных бизнес-требований использовать только регулярные выражения…4. @Christos Я просто хочу разрешить значения, разделенные запятыми.
5. @vaibhavshah — Почему бы и нет?
Ответ №1:
Вы можете использовать
^[a-zA-Z] [a-zA-Z0-9_-]*(?:,[a-zA-Z] [a-zA-Z0-9_-]*)*$
Объяснение:
^ # Start of string
[a-zA-Z] [a-zA-Z0-9_-]* # Match a single value
(?: # Start of non-capturing group
, # Match a comma
[a-zA-Z] [a-zA-Z0-9_-]* # Match a single value
)* # Repeat non-capturing group as often as necessary
$ # End of string
Если вы используете это регулярное выражение на стороне клиента (т. Е. В соответствии с правилами ECMAScript), вы можете упростить его до
(?i)^[a-z] [w-]*(?:,[a-z] [w-]*)*$