IE упущения в регулярных выражениях - PullRequest
0 голосов
/ 31 января 2012

Я пытаюсь определить регулярное выражение, необходимое для правильной работы моего валидатора ASP.NET. В настоящее время с помощью выражения ниже я могу правильно проверить следующую строку примера в Firefox, но не в IE

12{2}12{0-9}1{12,13}

с помощью

(({\d+\})*|(\d)*|({(\d+,)+\d+\})*|({(\d+)\-(\d+)\})*)+

После некоторого исследования кажется, что это происходит из-за ошибки упреждения, но, поскольку я довольно плохо знаком с использованием регулярных выражений, я не понимаю, как правильно его изменить, чтобы обойти эту ошибку?

Пожалуйста, накорми меня высшим знанием !!

EDIT: Выражение должно соответствовать этим трем необязательным отдельным компонентам, которые могут быть в строке в любом порядке. Я попытался придумать выражение, описывающее каждый отдельный компонент, а затем объединить их в одно выражение.

{n} regex {\d+\}  to match sample {423} optional digits

{n,n,n} regex {(\d+,)+\d+\} to match sample set of digit {24,25,26}

{n-n} regex {(\d+)\-(\d+)\} to match sample range of {0-9}

individual digits (\d) to match sample 232

РЕДАКТИРОВАТЬ 2: В конце я буду использовать это выражение и особую благодарность woohoo

((\d*\#*\**)*\{((\d*\#*\**)+|(\d*\#*\**)+\-(\d*\#*\**)+|((\d*\#*\**)+\,)+(\d*\#*\**)+)\}(\d*\#*\**)*)+

выражение поддерживает цифры # и * в каждой позиции.

1 Ответ

1 голос
/ 31 января 2012

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

\d+\{(\d+|\d+\-\d+|\d+\,\d+)\}

в конечном итоге вы можете добавить знак +, чтобы соответствовать одному или нескольким из них,

(\d+\{(\d+|\d+\-\d+|\d+\,\d+)\})+

или, если вы хотите сопоставить определенное количество из них, используйте количественное выражение {m, n}:

(\d+\{(\d+|\d+\-\d+|\d+\,\d+)\}){3,}

В этом случае я сделал это, чтобы соответствовать ровно 3 штуки.

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