2009-07-08 3 views
1

ICQ UIN과 같은 입력 만 허용하려면 어떤 RegularExpressionValidator.ValidationExpression을 사용해야합니까?RegEx for ICQ UIN

즉 구분 기호와없이 대시를 사용합니다.

답변

4

다음과 같은 간단한 표현식을 사용할 수 있습니다.

^([0-9]-?){7,8}[0-9]$ 

단점은 1-2-3-4-5-6-7-8 같은 일을 할 수 있다는 것입니다. 레이아웃을 더 많이 제한하려면 복잡한 표현식을 사용할 수 있습니다.

^(?=([0-9]-?){8,9})([0-9]{2,3}-?)*(?<!-)$ 

이 표현은 문자열이 정확히 8-9 숫자 앞서 주장 (?=([0-9]-?){8})을 긍정적 인 모습을 사용하여 일부 대시 포함되어 있음을 주장한다. 그런 다음 대시로 구분 된 두 개 또는 세 개의 숫자 그룹을 일치시키고 마지막으로 문자열이 어설 션 (?<!-)의 음수 모양을 사용하여 대시로 끝나지 않는다고 주장합니다.

이렇게해도 12-34567-89과 같은 불규칙한 패턴이 허용됩니다. 그것을 제거하고 싶다면, 허용 된 모든 패턴을 나열해야합니다. 하지만 그렇게하지 말고 가능한 한 많은 융통성을 허용하십시오. 나는 8-9 개의 숫자와 임의의 수의 대시 (심지어는 --123---4-5-67--8)를 허용하고 사전 정의 된 형식으로 사용자 입력을 다시 작성할 수 있습니다.

^(-*[0-9]-*){8,9}$ 
+2

일부 의견 : (1) ICQ를 사용했을 때 나는 6 자리 숫자를 가졌습니다. (2) ICQ 번호는 0으로 시작할 수 없다고 생각합니다; (3) 그냥 대시를 무시하는 것은 좋은 정책입니다. IMHO :'^ - * [1-9] [0-9 -] * $'이면 충분합니다 ... – Massa

+2

마사, ... ICQ에는 6 자리 숫자가 있으며, 11 년 또는 12 년 전에 합류했습니다. –