2011-12-09 7 views
1

数字が01,02または08で始まり、10桁または11桁の長さで始まるかどうかを確認するために、 。数字が01 02または08で始まり、10または11桁の数字であることを確認する正規表現が必要

01614125745 
02074125475 
0845895412 
08004569321 

と数字他の形態では失敗し、数のように:ように

0798224141 
441544122444 
0925456754 

は、例えば、私はこのようにフォーマットされた数字は渡したいです。基本的には、0102または08で始まらない番号です。

答えて

12

次のパターンは基準を、以下:

/^(?=\d{10,11}$)(01|02|08)\d+/ # This pattern can easily be extended 

/^(?=\d{10,11}$)0[128]\d{8,9}/ # Same effect 

説明:

^    Begin of string 
(?=\d{10,11}$) Followed by 10 or 11 digits, followed by the end of the string 
(01|02|08)  01, 02 or 08 
\d+    The remaining digits 
+0

正規表現の部分についての説明は、回答をより良くします。特に、非キャプチャグループと欲張り量限定子を使用する場合は? *これらはほとんどの開発者にとってエキゾチックな機能です。 –

+1

私はちょうど '/ ^(01 | 02 | 08)\ d {8,9} $ /'をやったでしょうが、これはあまりにも機能し、後でもっと柔軟になります。 – Wiseguy

+2

@ウィググイ私は "10から11桁の長さで始まって..."と見ました。この理由から、私は簡単に再利用して拡張できるパターンをsupllyすることにしました。(以下の基準が追加されればどうなるでしょうか?) –

7

ロブWの答えが正しいです。しかし、私はこのような簡単な表現を使用します:(先読みの必要はありません)

/^0[128][0-9]{8,9}$/ 
+2

なぜ誰かがこの回答を下落させるでしょうか?それは簡単で、速く正確です。行く数字... – ridgerunner

+1

正しいとしてUpvoted! –

+0

Upvoted、正しい答えはdownvotedする必要があります。 – Varundroid

関連する問題