PDA

View Full Version : سوال: RegularExpression براي چک کردن شماره تلفن ثابت



bftarane
دوشنبه 17 بهمن 1390, 17:17 عصر
سلام.
من مي خوام يه regular expression براي چک کردن شماره تلفن ثابت داشته باشم.
مي خوام کاربر پيش شماره و بعد شماره رو وارد کنه. مثلاً براي تهران
02123456789

خوب پيش شماره براي شهرهاي مختلف فرق داره و تعداد اعدادش هم متغيره. چه جوري به کاربر اجازه بدم ابتدا يه عدد با تعداد دلخواه وارد کنه و بعد يه عدد هشت رقمي؟
سوالم رو اين جوري بپرسم چه تغييري بايد در کد زير بدم؟

^0[0-9][0-9]{8}$
خوب اين جور که فهميدم اين فقط اين جوري قبول ميکنه اول يه 0
بعد يه رقم
بعد يه عدد هشت رقمي

ممنون

A.S.Roma
دوشنبه 17 بهمن 1390, 17:48 عصر
^0[0-9]{2,}[0-9]{7,}$

bftarane
دوشنبه 17 بهمن 1390, 18:12 عصر
سلام. با عبارتي که شما نوشته بوديد اين شماره رو امتحان کردم 0211558499989555555 خطايي نداد.
ولي با کمک پست شما اين رو نوشتم
^0[0-9]{2,}-[0-9]{8}$ و چند تا عدد رو امتحان کردم نتيجه، دلخواهم بود.
فکر کنم بدون خط فاصله نشه اين کار رو انجام داد.

A.S.Roma
دوشنبه 17 بهمن 1390, 18:14 عصر
کد من چک میکنه پیش شماره حداقل 2 رقم و شماره تلفن حداقل 7 رقم باشه .
شما اگر حداقل ها و حداکثرها واستون مشخصه بگین براتون Regex ش رو بنویسم.

bftarane
دوشنبه 17 بهمن 1390, 18:24 عصر
من فقط دارم تمرين ميکنم. و چون اطلاعي از حداقل و حداکثر پيش شماره ها و شماره تلفن ها ندارم پس چيزي برام مشخص نيست.
ولي اگه لطف کنيد بگيد مثلاً حداکثر 5، و
همچنين حداکثر 5 حداقل 1 رو چه جوري مي نويسن ممنون ميشم. (يعني هم حداقل و هم حداکثر توأماً)
اگه يه منبع خوب براي مطالعه هم معرفي کنيد که ديگه چه بهتر.

A.S.Roma
دوشنبه 17 بهمن 1390, 18:35 عصر
حداقل 2 و حداکثر 8 میشه :

[0-9]{2,8}

البته تو مثال بالا اعداد یک رنج مشخص شده . اما هر Blockی میتونه این اتفاق واسش بیوفته و تکرار بشه. مثل :

.{2,8}

که معنیش میشه هر کاراکتری که 2 تا 8 بار تکرار شده باشه.

------------------------------------------------------------------
حداقل 5 تکرار یا بیشتر :
[0-9]{5,}
-------------------------------------------------------------------
دقیقا" 5 تکرار :

[0-9]{5}


یک Tool خوب واسه این قضیه هست به نام Expresso ، از اینجا می تونید دانلود کنید :
http://www.ultrapico.com/ExpressoDownload.htm

اما واسه یادگرفتنش بهترین مرجع MSDN هست . هر چند یادگیریش به این سادگی نیست !