2014-11-27 2 views
0

Я хочу использовать регулярное выражение для проверки целой строки, состоящей из значений, разделенных полуколониями. Например, если каждый элемент [0-9]+:Регулярное выражение для списка с разделителями с запятой

((^|;)[0-9]+)+$ 

Это работает в JavaScript, но не в ASP.Net RegularExpressionValidator управления. Я видел решения, которые включают дублирующие элемент:

^[0-9]+(;[0-9]+)*$ 

Это не подходит для меня, как элемент регулярного выражения я на самом деле, используя длинное 280 символов и должно оставаться в обслуживании.

Есть ли какой-то трюк, который мне не хватает?

ответ

1

Второй правильный. Первый, даже когда он действителен, будет соответствовать строкам с начальными точками с запятой: ;1;2;3, поэтому чередование на самом деле не делает то, что вы хотите.

Нет никакого переносного способа избежать повторения, если вы хотите только иметь точку с запятой - , разделенную на. Если вам нужно, чтобы regexp был более удобным для обслуживания, я предлагаю вам использовать функцию или внешний скрипт для создания регулярного выражения из строковых битов.

К сожалению, я не являюсь экспертом .NET, поэтому не могу сказать, имеет ли он расширение, которое позволило бы не повторять. Некоторые другие диалекты, например Oniguruma, позволят вам сделать это красиво с определениями групп:

(?<segment>[0-9]+)(;\g<segment>)+ 
+0

Я пробовал это. Валидатор соответствует всей строке, поэтому, откровенно говоря, «^» и «$» являются избыточными, просто привычными. Ведущий ';' помечен как недопустимый. –

+0

В JavaScript, где вы заявили, что он работает, ведущий ';' is [not] (http://regex101.com/r/yI9sU1/1) помечен как недействительный. – Amadan

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