Я пытаюсь определить регулярное выражение, необходимое для правильной работы моего валидатора 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*\#*\**)*)+
выражение поддерживает цифры # и * в каждой позиции.