RegEx для ICQ UIN
Какие RegularExpressionValidator.ValidationExpression
я должен использовать, чтобы разрешить ввод только ICQ UIN?
xxx-xxx-xxx and xxx-xxx-xx and xx-xxx-xxx and xxxxxxxxx so on..
т.е. с тире в качестве разделителя и без.
1 ответ
Вы можете использовать следующее простое выражение.
^([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}$