2009-07-08 3 views
1

RegularExpressionValidator.ValidationExpression Должен ли я использовать только ICQ UIN, например, вход?RegEx для ICQ UIN

xxx-xxx-xxx and xxx-xxx-xx and xx-xxx-xxx and xxxxxxxxx so on.. 

i.e. с тире как разделитель и без.

ответ

4

Вы можете использовать следующее простое выражение.

^([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}$ 
+2

Некоторые комментарии: (1) Когда я использовал ICQ, у меня было 6-значное число; (2) Я думаю, номера ICQ не могут начинаться с 0; (3) Просто игнорируйте тире - это хорошая политика. ИМХО: '^ - * [1-9] [0-9 -] * $' будет достаточно ... – Massa

+2

Масса, вы отдаете свой интернет-возраст с этим ... Моя ICQ также имеет 6-значное число, и я присоединился 11 или 12 лет назад. –

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

  • Нет связанных вопросов^_^