View Full Version : مبتدی: عبارت باقاعده ای برای تعیین محدوده ای از اعداد
h_r_sh
پنج شنبه 19 مرداد 1391, 18:03 عصر
چطور می توان یک عبارت باقاعده نوشت تا محدوده ای از اعداد را شامل شود؟ مثلا:
برای اعداد کوچکتر مساوی هزار و بزرگتر از صفر.
ضمنا آیا امکان دارد که این محدوده جستجو در زمان اجرا و توسط کاربر تغییر داده شود؟
tooraj_azizi_1035
پنج شنبه 19 مرداد 1391, 20:03 عصر
شما می تونی بعد از استخراج اعداد با Linq رو بازه ای که می خوای فیلتر کنی:
Regex rx=new Regex();
MatchCollection matches = rx.Matches(text,"\d+");
IEnumerable<int> num= from m in matches.OfType<Match>()
where int.Parse(m.Value)>=0 && int.Parse (m.Value)<=100
select int.Parse( m.Value);
به جای 0 و 100 می تونی مقداری در Runtime تعیین کنی.
من تو یه سایت اینارم دیدم:
Here are a few more common ranges that you may want to match:
000..255: ^([01][0-9][0-9]|2[0-4][0-9]|25[0-5])$
0 or 000..255: ^([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])$
0 or 000..127: ^(0?[0-9]?[0-9]|1[0-1][0-9]|12[0-7])$
0..999: ^([0-9]|[1-9][0-9]|[1-9][0-9][0-9])$
000..999: ^[0-9]{3}$
0 or 000..999: ^[0-9]{1,3}$
1..999: ^([1-9]|[1-9][0-9]|[1-9][0-9][0-9])$
001..999: ^(00[1-9]|0[1-9][0-9]|[1-9][0-9][0-9])$
1 or 001..999: ^(0{0,2}[1-9]|0?[1-9][0-9]|[1-9][0-9][0-9])$
0 or 00..59: ^[0-5]?[0-9]$
0 or 000..366: ^(0?[0-9]?[0-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6])$
اینارم تست نکردم:
0 or 000..255: (?Z[0..255])
0 or 000..127: (?Z[0..127])
0 or 000..999: (?Z[0..999])
1 or 001..999: (?Z[1..999])
0 or 00..59: (?Z[0..59])
0 or 000..366: (?Z[0..366])
h_r_sh
جمعه 20 مرداد 1391, 18:12 عصر
ممنونم از پاسخ شما. عبارت ^([0-9]|[1-9][0-9]|[1-9][0-9][0-9])$ خوب به نظر می رسه. اما برای 1000 کار نمی کنه. من اینو ^([1-9]|[1-9][0-9]|[1-9][0-9][0-9])$|^(1000) امتحان کردم. از 0 تا 100000 چک کردم درست جواب داد.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.