PDA

View Full Version : چک کردن یک textbox برای وارد کردن شماره (تلفن)



tc1000
سه شنبه 04 اردیبهشت 1386, 02:23 صبح
باسلام
من میخوام وقتی یوزر توی یک textbox شماره موبایل رو اشتباه وارد میکنه به اون error بده
یعنی اگر یک چیزی رو استفاه زد به طور مثال
- باید حتما 11 کاراکتر باشه
-دو رقم اول با 09 شروع بشه
- بعدش با 1 برای مخابرات - 2 برای تالیا 3 برای ایرانسل
و بدش دیگه مهم نیست.
ایا باید کد نویسی شه یا میشه یه طوری با امکانات کنترلها حل شه؟

hamid58
سه شنبه 04 اردیبهشت 1386, 02:37 صبح
از کنترل RegularExpressionValidator استفاده کن . RegularExpression رو مطابق با چیزی که میخوای بنویس .

tc1000
سه شنبه 04 اردیبهشت 1386, 03:10 صبح
بله ممنون از جوابتون ولی من میخوام توی textbox در حالت multitext هستش این کار رو انجام بدم و بعد هر موبایل در یک خط نوشته میشه می خوام که نتونن اشتباه بنویسند.
چطوری میشه فهمید در خط 3 شماره اشتباه وارد شده

من برای یک text box در حالت single گذاشتم و به RegularExpression


09\d{8}
این رو دادم ولی برای مالتی تکست کار نمی کنه

صابر
چهارشنبه 05 اردیبهشت 1386, 09:48 صبح
با یک حلقه for میتونی این regular expression رو روی هر خط تکست باکس تست کنی.
و طبیعتاً index حلقه شماره خط ناصحیح رو نشون میده.

tc1000
چهارشنبه 05 اردیبهشت 1386, 10:38 صبح
میتونید یک نمونه کد برام بزارید

صابر
چهارشنبه 05 اردیبهشت 1386, 13:39 عصر
این namespace رو using کنید System.Text.RegularExpressions و روی رویداد کلیک دکمه این کد رو بذارین:


Regex rgx = new Regex(@"091\d{8}$");
foreach (string line in TextBox1.Text.Split(new char[] { '\n', '\r'}))
if (!string.IsNullOrEmpty(line))
Response.Write(rgx.IsMatch(line) ? line + " is true<br />" : line + " is false<br />");

tc1000
چهارشنبه 05 اردیبهشت 1386, 18:27 عصر
متاسفانه کار نمی کنه فقط خط اول رو مشناسه

صابر
پنج شنبه 06 اردیبهشت 1386, 23:20 عصر
تست کردم. درست کار میکنه!
وب سایت رو ضمیمه کردم.

tc1000
پنج شنبه 06 اردیبهشت 1386, 23:35 عصر
کی میتونه این یک تیکه رو به VB تبدیل کنه؟


foreach (string line in TextBox1.Text.Split(new char[] { '\n', '\r' }))

صابر
پنج شنبه 06 اردیبهشت 1386, 23:58 عصر
Dim rgx As New Regex("091\d{8}$")
For Each line As String In TextBox1.Text.Split(vbCrLf)
If rgx.IsMatch(line) Then Response.Write(line + " is true<br />") Else Response.Write(line + " is false<br />")
Next


البته نمیدونم چرا vb دوبار متن رو پیمایش میکنه!!

achilles
جمعه 07 اردیبهشت 1386, 00:38 صبح
کی میتونه این یک تیکه رو به VB تبدیل کنه؟



foreach (string line in TextBox1.Text.Split(new char[] { '\n', '\r' }))





Dim Sa() as String=TextBox1.Text.Split(VbCr)
For each s as String in sa
.
.
.
Next

tc1000
جمعه 07 اردیبهشت 1386, 04:17 صبح
اگه نخوام از response.write استفاده کنم و بخوام این خروجی ها رو توی لیبل با هم نمایش بدم باید چکار کنم ایا میشه توی یک لیبل همه اینها رو نشون داد. بصورت خط به خط و منظم

tc1000
جمعه 07 اردیبهشت 1386, 04:18 صبح
یه سئوال دیگه داشتم برای اخرین شماره وقتی که enter میزنیم اون اینتر هم حساب میشه . میشه کاری کرد که اگر خالی بود خطا نده

achilles
جمعه 07 اردیبهشت 1386, 10:23 صبح
اگه نخوام از response.write استفاده کنم و بخوام این خروجی ها رو توی لیبل با هم نمایش بدم باید چکار کنم ایا میشه توی یک لیبل همه اینها رو نشون داد. بصورت خط به خط و منظم




Dim s1() As String = TextBox1.Text.Split(vbCrLf)
Dim counter As Int32 = 0
For Each s As String In s1
Label1.Text += s
Next

achilles
جمعه 07 اردیبهشت 1386, 10:42 صبح
یه سئوال دیگه داشتم برای اخرین شماره وقتی که enter میزنیم اون اینتر هم حساب میشه . میشه کاری کرد که اگر خالی بود خطا نده




Dim s As String = TextBox1.Text
While s.EndsWith(vbCrLf)
s = s.Remove(s.Length - 2, 2)
End While