我在一些网站上发现了这个代码,它完美无缺.它验证电话号码是以下格式之一:
(123)456-7890或123-456-7890
问题是我的客户端(我不知道为什么,也许客户端的东西)想要添加另一种格式,连续十个数字,如下所示:1234567890.
我正在使用这个正则表达式,
/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/
Run Code Online (Sandbox Code Playgroud)
如何添加它还验证另一种格式?我对正则表达式不太满意.
我正在存储这样的电话号码model:
phone_number = models.CharField(max_length=12)
Run Code Online (Sandbox Code Playgroud)
用户将输入电话号码,我将使用该电话号码.SMS Authentication此应用程序将在全球范围内使用.所以我还需要国家代码.是CharField存储电话号码的好方法?而且,我该如何验证电话号码?
提前致谢.
我想为支持以下格式的标准美国型电话号码编写正则表达式:
###-###-####
(###) ###-####
### ### ####
###.###.####
Run Code Online (Sandbox Code Playgroud)
其中#表示任何数字.到目前为止,我想出了以下表达式
^[1-9]\d{2}-\d{3}-\d{4}
^\(\d{3}\)\s\d{3}-\d{4}
^[1-9]\d{2}\s\d{3}\s\d{4}
^[1-9]\d{2}\.\d{3}\.\d{4}
Run Code Online (Sandbox Code Playgroud)
分别.我不太确定最后一个是否适用于虚线检查.我也想知道是否有任何方法可以编写单个表达式而不是4个不同的表达式,以满足我提到的不同格式.如果是这样,我不知道该怎么做.还有我如何修改表达式/表达式,以便我还可以包含一个条件来支持区域代码作为可选组件.就像是
+1 ### ### ####
Run Code Online (Sandbox Code Playgroud)
其中+1是区号,它是可选的.
在数据库字段中存储电话号码的良好数据结构是什么?我正在寻找足够灵活的东西来处理国际号码,还有一些能够有效查询号码各个部分的东西.
编辑:只是为了澄清这里的用例:我目前将数字存储在一个varchar字段中,并在客户输入时将其保留.然后,当代码需要该数字时,我将其标准化.问题是,如果我想查询几百万行来查找匹配的电话号码,它涉及一个功能,如
where dbo.f_normalizenum(num1) = dbo.f_normalizenum(num2)
Run Code Online (Sandbox Code Playgroud)
这是非常低效的.当只是一个varchar字段时,寻找像区域代码之类的东西的查询变得非常棘手.
[编辑]
人们在这里提出了很多好建议,谢谢!作为一个更新,这里是我现在正在做的事情:我仍然在varchar字段中存储与输入完全相同的数字,但是在查询时没有规范化事物,我有一个触发器,可以在插入记录时完成所有工作或更新.所以我对我需要查询的任何部分都有内联或重要内容,并且这些字段被编入索引以使查询运行得更快.
我想验证用户输入的电话号码,其号码应该是11,并以01开头,值字段应该只是数字.如何使用Laravel验证?
这是我的控制器:
public function saveUser(Request $request){
$this->validate($request,[
'name' => 'required|max:120',
'email' => 'required|email|unique:users',
'phone' => 'required|min:11|numeric',
'course_id'=>'required'
]);
$user = new User();
$user->name= $request->Input(['name']);
$user->email= $request->Input(['email']);
$user->phone= $request->Input(['phone']);
$user->date = date('Y-m-d');
$user->completed_status = '0';
$user->course_id=$request->Input(['course_id']);
$user->save();
return redirect('success');
}
Run Code Online (Sandbox Code Playgroud) 输入电话号码时我有一个字符串 - 有一个掩码所以它总是看起来像"(123)456-7890" - 我想在将格式保存到数据库之前取出格式.
我怎样才能做到这一点?
我正在尝试写一个正则表达式来验证美国电话号码的格式(123)123-1234 - 真123-123-1234 - 是的
其他一切都无效.
我想出了类似的东西
^\(?([0-9]{3}\)?[-]([0-9]{3})[-]([0-9]{4})$
Run Code Online (Sandbox Code Playgroud)
但这证实了,123)-123-1234(123-123-1234
这是不对的.
我正在尝试使用正则表达式来验证电话号码,并在提交无效的号码或电话号码时返回错误.
MVC代码:
<ol class="row">
<li class="cell" style="width: 20%;">Phone Number:</li>
<li class="cell last" style="width: 60%;">
@Html.TextBoxFor(model => model.PhoneNumber, new { @class = "textbox" })
@Html.ValidationMessageFor(model => model.PhoneNumber)
</li>
</ol>
Run Code Online (Sandbox Code Playgroud)
C#代码:
[DataType(DataType.PhoneNumber)]
[Display(Name = "Phone Number")]
[Required(ErrorMessage = "Phone Number Required!")]
[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$",
ErrorMessage = "Entered phone format is not valid.")]
public string PhoneNumber { get; set; }
Run Code Online (Sandbox Code Playgroud)
但是,输入框不会向用户显示消息,表明提交的电话号码无效.
regex ×6
c# ×2
javascript ×2
php ×2
.net ×1
asp.net-mvc ×1
database ×1
django ×1
django-forms ×1
laravel ×1
laravel-5.2 ×1