PDA

View Full Version : معتبر سازی یک فیلد عددی



Restlesa
چهارشنبه 16 فروردین 1396, 00:47 صبح
سلام بر همگی دوستان
فرمی دارم که یکی از فیلد های اون قراره چند تا عدد در بازه 1 تا 254 رو دریافت کنه که این اعداد با علامت (,) از هم جدا میشن مثل نمونه زیر
100,254,1,50

حالا می خوام این فیلد رو معتبر سازی کنم که اولا کاربر فقط اعداد 1 تا 254 رو وارد کرده باشه و برای جداسازی اعداد هم فقط از علامت (,) استفاده کرده باشه
کسی از دوستان کد RegEx این الگوریتم رو بلد هست ؟؟؟

Restlesa
جمعه 18 فروردین 1396, 11:55 صبح
62 بازدید اما بدون پاسخ !!!
خواهس می کنم اگر کسی از دوستان بلده راهنماییم کنه :گریه::گریه::گریه:

Mag-Mag
شنبه 19 فروردین 1396, 15:39 عصر
سلام
من با جاوا اسکریپت تا یه جایی نوشتم



<input type="text" id="FromEmployeeId" name="FromEmployeeId" onkeypress="return isNumber(event)"/>



<script>
function isNumber(evt) {
evt = (evt) ? evt : window.event;
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode == 44)
return true;
if (charCode > 31 && (charCode < 48 || charCode > 57)) {
return false;
}
return true;
}
</script>


این الان فقط مشکلش اینه که
کاربر میتونه دوتا ,, هم بزنه
ولی فقط اعداد و , رو قبول میکنه

میتونه سمت سرور موقع ذخیره
چک کنی هر جا دوتا , داشتی و بینش خالی بود اونا رو ذخیره نکنی

Restlesa
شنبه 19 فروردین 1396, 23:06 عصر
ممنونم بابت سورسی که گذاشتی اما من کد RegEx رو لازم دارم
کد RegEx ش رو می تونی برام بزاری ؟؟؟!!!

Mag-Mag
یک شنبه 20 فروردین 1396, 09:20 صبح
فک کنم همچین چیزی بشه

(\d+)(,\s*\d+)*

این لینک ها رو دیدی؟
لینک 1 (http://stackoverflow.com/questions/1396084/regex-for-comma-delimited-list)
لینک 2 (http://stackoverflow.com/questions/16620980/comma-separated-numbers-regex)

Mahmoud.Afrad
یک شنبه 20 فروردین 1396, 10:20 صبح
در مورد تشخیص بازه عددی جستجو میکردید میفهمیدید چطور بین 1 تا 254 رو تشخیص بدید. بقیه اش قرار دادن چهار بار پشت سر هم از اون الگو هست
^([01]?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]),([01]?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]),([01]?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]),([01]?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])$

Mag-Mag
یک شنبه 20 فروردین 1396, 10:39 صبح
این عبارت رو من تست کردم
جواب میده

<form id="form2" runat="server">
<asp:TextBox ID="txtNumbers" runat="server" />
<asp:Button ID="btnSubmit" runat="server" Text="Submit" />
<asp:RegularExpressionValidator ID="regexpName" runat="server"
ErrorMessage="This expression does not validate."
ControlToValidate="txtNumbers"
ValidationExpression="(\d+)(,\s*\d+)*" />
</form>


فقط بین 1 تا 254 رو چک نمیکنه ، یعنی مثلا 300 رو هم میگیره

یه جوری باید اینو با این

در مورد تشخیص بازه عددی جستجو میکردید میفهمیدید چطور بین 1 تا 254 رو تشخیص بدید. بقیه اش قرار دادن چهار بار پشت سر هم از اون الگو هست
^([01]?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]),([01]?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]),([01]?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]),([01]?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])$

باهم در بیاری

Restlesa
سه شنبه 22 فروردین 1396, 03:08 صبح
در مورد تشخیص بازه عددی جستجو میکردید میفهمیدید چطور بین 1 تا 254 رو تشخیص بدید. بقیه اش قرار دادن چهار بار پشت سر هم از اون الگو هست
^([01]?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]),([01]?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]),([01]?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]),([01]?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])$
این کد اصلا کار نمی کنه



(\d+)(,\s*\d+)*



این کد هم اشتباهه چون حروف رو هم قبول می کنه

Mag-Mag
چهارشنبه 23 فروردین 1396, 09:28 صبح
این کد اصلا کار نمی کنه



این کد هم اشتباهه چون حروف رو هم قبول می کنه

در زمان تایپ کردن که قبول میکنه
اگر میخواید در اون زمان هم قبول نکنه
باید با رویداد onkeypress کار کنید

شما سمپل منو دقیقا توی یک صفحه ساده بزارید و تست کنید
توی سمپل من زمانی که روی دکمه submit بزنید ، RegularExpression چک میشه