我在数据注释中使用手机验证正则表达式。 电话验证工作正常,但如果我只输入空格,则验证不起作用。
这是我的正则表达式
^\s*(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{4})(?: *x(\d+))?\s*$
答案 0 :(得分:0)
使用jquery.download的蒙面输入插件,形成nuget.it会更好。这个:
在您看来:
<script type="text/javascript">
jQuery(function ($) {
$("#contactNumber").mask("(999) 999-9999");
});
</script>
<script src="~/Scripts/jquery.maskedinput.js"></script>
@Html.ValidationMessageFor(m => m.ContactNumber)
@Html.LabelFor(m => m.ContactNumber, "Contact Number :", new { style = "display:inline;" })
@Html.TextBox("ContactNumber", Model.ContactNumber, new { id = "contactNumber" })
在模特:
[Required(ErrorMessage = "Number Required")]
[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "Entered phone format is not valid.")]
public string ContactNumber { get; set; }
答案 1 :(得分:0)
要直接回答您的问题,您的正则表达式不会验证空格,因为粗体部分无法匹配空白:
^ \s* (?:\+?(\d{1,3}))? [-. (]* (\d{3}) [-. )]* (\d{3}) [-. ]* (\d{4}) (?: *x(\d+))? \s* $
如果你想匹配模式,或者什么都不匹配,你可以做一个简单的修改:
^(?:\s*(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{4})(?: *x(\d+))?\s*)?$
然而,在尝试验证国际电话号码的更一般问题上,我同意评论者认为这很难,而且可能是一个不值得解决的问题。您可能只想验证更简单的事情,例如:
另外,不确定是否要在那里处理扩展(“48204020420 x14”等),但这真的非常复杂。