Разрешение значений, разделенных запятыми, в текстовом поле с использованием регулярного выражения

#c# #asp.net #regex #validation #textbox

#c# #asp.net #регулярное выражение #проверка #текстовое поле

Вопрос:

В моем asp.net приложение У меня есть одно текстовое поле, в котором я хочу разрешить значения, разделенные запятыми, например

 name1,name1,name3
  

У меня есть одно регулярное выражение для проверки значений, т.Е. Одно значение ( name1 или name2 или name3 ) должно удовлетворять регулярному выражению [a-zA-Z] [a-zA-Z0-9-_]* .

Теперь я хочу проверить обе проверки, используя одно регулярное выражение

  1. одно значение должно удовлетворять [a-zA-Z] [a-zA-Z0-9-_]* регулярному выражению

  2. В текстовом поле должны быть значения, разделенные запятыми.

Я не могу создать правильное регулярное выражение для этого.

Комментарии:

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-]*)*$