View Full Version : validate بودن یک IP Address با استفاده از regular expression
Restlesa
جمعه 20 اسفند 1395, 14:03 عصر
سلام
با استفاده از دستور زیر فیلد ip رو چک می کنم که ساختار صحیحی داشته باشه
private static final String IPADDRESS_PATTERN = "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";
حالا سوال من اینه که اگه بخوام کاربر رو محدود بکنم که قسمت اول آدرس ip رو فقط فقط بتونه 10 وارد بکنه و قسمت چهارم رو هم فقط فقط بتونه 1 وارد بکنه چه تغییراتی باید تو کد بالا بدم ؟؟؟
یعنی فقط آدرس ip هایی با ساختار 10.255.255.1 صحیح باشه
با تشکر
vahid-p
جمعه 20 اسفند 1395, 16:38 عصر
یه خورده بستگی به انواع ورودی هایی که میتونه بگیره هم داره. مثلا تو فیلدهای وسطی 002 قابل قبوله. ولی 0002 قبول نمیکنه طبق regex ای که گذاشتید ولی در هر صورت صفر قبل از عدد مهم نیست.
به هر حال.
اگر بذاریم هر فیلد حداکثر سه رقم باشه یعنی 10 بتونه قبلش یک صفر یا هیچ صفری نباشه و 1 بخش چهارم هم هیچ، یک یا دو صفر باشه، کد زیر:
^([0]{0,1}10)\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([0]{0,2}1)
اگر هم میخوای فقط 10 و 1 نوشته باشه و دو بخش وسطی مثل قبل باشه خب ساده تره:
^(10)\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.(1)
Restlesa
جمعه 20 اسفند 1395, 19:58 عصر
ممنون بابت راهنماییت
دستور regex برای کنترل حروف فارسی وجود داره ؟؟؟
یعنی کاربر فقط حروف فارسی الف تا ی رو بتونه وارد کنه
Restlesa
جمعه 20 اسفند 1395, 21:14 عصر
ببخشید یه سوال دیگه هم داشتم
دستور "+[0-9]" به این معنی که فیلد مورد نظر تنها می تونه شامل عدد باشه ... حالا سوالم اینه که اگر بخوام چک کنم که فیلد مورد نظر با عددی به غیر از صفر شروع بشه باید چه تغییری تو دستور فوق بدم ؟؟؟
vahid-p
جمعه 20 اسفند 1395, 23:18 عصر
دستور regex برای کنترل حروف فارسی وجود داره ؟؟؟
بله. کافیه به جای حرف A اولین حرف فارسی و Z آخرین حرف رو قرار بدی. برای فارسی هم اینکه حرف وسط باشه آخر باشه و... تفاوتی نداره و کوچک و بزرگ هم نداره.
ولی جدول unicode اش رو چک کن دقیقا ببینی کدوم حرف تا کدوم حرف رو میخوای و اینکه کاراکترهای نامرتبط وسطشون نباشه
دستور "+[0-9]" به این معنی که فیلد مورد نظر تنها می تونه شامل عدد باشه ... حالا سوالم اینه که اگر بخوام چک کنم که فیلد مورد نظر با عددی به غیر از صفر شروع بشه باید چه تغییری تو دستور فوق بدم ؟؟؟
به صورت دقیقتر هر دنبال عددی (بدون فاصله) که حداقل متشکل از یک رقم 0 تا 9 باشه.
برای اینکه بگی با چی شروع بشه از کاراکتر ^ استفاده میکنیم. با چی تموم بشه با کاراکتر $
میتونی به این صورت بنویسی:
^[1-9][0-9]*
این regex فیلد خالی رو قبول نمیکنه. (یعنی بدون هیچ رقمی، قبول نمیکنه و لااقل یک رقم باید باشه)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.