RegularExpressionValidator.ValidationExpression
Должен ли я использовать только ICQ UIN, например, вход?RegEx для ICQ UIN
xxx-xxx-xxx and xxx-xxx-xx and xx-xxx-xxx and xxxxxxxxx so on..
i.e. с тире как разделитель и без.
RegularExpressionValidator.ValidationExpression
Должен ли я использовать только ICQ UIN, например, вход?RegEx для ICQ UIN
xxx-xxx-xxx and xxx-xxx-xx and xx-xxx-xxx and xxxxxxxxx so on..
i.e. с тире как разделитель и без.
Вы можете использовать следующее простое выражение.
^([0-9]-?){7,8}[0-9]$
Недостаток заключается в том, что она позволяет вещи, как 1-2-3-4-5-6-7-8
. Если вы хотите ограничить макет больше, вы можете использовать сложные выражения.
^(?=([0-9]-?){8,9})([0-9]{2,3}-?)*(?<!-)$
Это выражение утверждает, что строка содержит ровно восемь или девять чисел и некоторые штрихи, используя положительный взгляд вперед утверждение (?=([0-9]-?){8})
. Затем он сопоставляет группы из двух или трех чисел, необязательно разделенных тире, и, наконец, утверждает, что строка не заканчивается тире, используя отрицательный внешний вид за утверждением (?<!-)
.
Это все еще допускает некоторые нерегулярные узоры, такие как 12-34567-89
. Если вы тоже хотите их устранить, вам придется перечислить все разрешенные шаблоны. Но я предлагаю не делать этого, но допускаю как можно большую гибкость - я бы разрешил каждую строку с восемью или девятью числами и любым количеством тире - даже --123---4-5-67--8
, а затем переформатировал пользовательский ввод в предопределенном формате.
^(-*[0-9]-*){8,9}$
Некоторые комментарии: (1) Когда я использовал ICQ, у меня было 6-значное число; (2) Я думаю, номера ICQ не могут начинаться с 0; (3) Просто игнорируйте тире - это хорошая политика. ИМХО: '^ - * [1-9] [0-9 -] * $' будет достаточно ... – Massa
Масса, вы отдаете свой интернет-возраст с этим ... Моя ICQ также имеет 6-значное число, и я присоединился 11 или 12 лет назад. –