XVAL والتعبير العادي تطابق
سؤال
أنا أستخدم XVAL للتحقق من صحة النماذج الخاصة بي في ASP.NET MVC 1.0
لست متأكدًا من سبب عدم التحقق من تعبيري المعتاد بشكل صحيح.
- نعم هو كذلك ليس التحقق من صحة قيمة فارغة
- نعم هو كذلك ليس التحقق من صحة قيمة "1" أو "12" أو "123" أو "1234"
- وهو يتحقق من قيمة "12345"
- وهو يتحقق من قيمة "12345"
- وهو يتحقق من قيمة "12345 -"
- إنه يتحقق من قيمة "12345 -1"
- إنه يتحقق من قيمة "12345 -12" ... إلخ
للحصول على الرمز البريدي ، أتوقع أحد النماذج:
12345
أو 12345 -1234
إليكم اثنين من regex جربتهما:
(\d{5})((( -)(\d{4}))?)
(\d{5})|(\d{5} -\d{4})
ها هو صف البيانات الوصفية الخاصة بي لـ XVAL
[MetadataType(typeof(TIDProfileMetadata))]
public class TIDProfileStep
{
public class TIDProfileMetadata
{
[Required(ErrorMessage = " [Required] ")]
[RegularExpression(@"(\d{5})|(\d{5} -\d{4})", ErrorMessage = " Invalid Zip ")]
public string Zip { get; set; }
}
}
ها هي صفحتي ASPX:
<% Html.BeginForm("Edit", "Profile", FormMethod.Post); %>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<h6>Zip:</h6>
</td>
<td>
<%= Html.TextBox("Profile.Zip")%>
</td>
</tr>
<tr>
<td>
<input type="submit"/>
</td>
</tr>
</table>
<% Html.EndForm(); %>
<% Html.Telerik().ScriptRegistrar()
.OnDocumentReady(() =>
{ %>
<%= Html.ClientSideValidation<TIDProfileStep>("Profile").SuppressScriptTags() %>
<% }); %>
المحلول 2
فشلت في ذكر أنني كنت أستخدم مكونًا إضافيًا لقناع لحقل الإدخال الخاص بي. يمكن العثور على المكون الإضافي للقناع هنا.
لذا ، في مربع النص إذا كنت سأملأ فقط أول 5 أرقام ، ثم يتم التحقق من صحة علامة التبويب إلى الحقل التالي على أنها خاطئة بسبب المكون الإضافي للقناع الذي استخدمته. المكون الإضافي للقناع ، يضع في حرف واحد من أجل الإمكانات الفارغة .... على سبيل المثال:
_____ -____
سيكون القناع الذي سيضعه في الحقل الفارغ على التركيز. إذا ملأت أول 5 أرقام ، فسأحصل عليها:
12345 -____
ثم إذا قمت بتبويب الحقل التالي ، -____
تمت إزالته ، ولكن يحتاج حقل الإدخال إلى إعادة صياغة Onblur.
إذن ما فعلته هو إعادة التحقق من حقل الإدخال على Blur والآن يعمل.
$('#Zip').blur(function() {
$(this).validate();
});
أنا استخدم هذا regex ^\d{5}( -\d{4})?$
نصائح أخرى
أنت في عداد المفقودين مرساة البداية والنهاية:
^\d{5}( -\d{4})?$
بدون هذه تسمح بالمطابقة الجزئية. يتطابق Regex مع السلسلة 12345 -1
بواسطة \d{5}
: 12345
-1
, والتحقق من صحة ذلك.