Php 如何在Laravel中使用多个正则表达式验证规则?
我目前正在为马来西亚公民开发一个系统,所以我需要一个基于马来西亚的电话号码格式。例如,电话号码如下所示:0161234567、0181234567、0191234567。基本上,它将从01开始,长度在10到11个数字之间。为此,我使用以下代码:Php 如何在Laravel中使用多个正则表达式验证规则?,php,regex,laravel,validation,Php,Regex,Laravel,Validation,我目前正在为马来西亚公民开发一个系统,所以我需要一个基于马来西亚的电话号码格式。例如,电话号码如下所示:0161234567、0181234567、0191234567。基本上,它将从01开始,长度在10到11个数字之间。为此,我使用以下代码: $rules = [ 'phone_no'=>'required|regex:/^01\d{8,9}$/', ]; $messages = [ 'phone_no.required' => 'Phone Number
$rules = [
'phone_no'=>'required|regex:/^01\d{8,9}$/',
];
$messages = [
'phone_no.required' => 'Phone Number is required',
'phone_no.regex' => 'Phone Number format is incorrect',
];
然而,我们可以使用另一种格式,即07(家庭或办公室电话号码)。这是我的问题。我不知道如何为regex设置多个验证规则。希望有人能帮我解决这个问题。除非有更多要求,否则只需指定一种模式或另一种模式即可。用
()
将它们分组:
和8或9位01
{8,9}
|
和7位07
{7}
0
和1或7
作为/^0(1,7)\d{8,9}$/
也可以是/^0[17]\d{8,9}$/
不确定哪个更好。/^0[17]\d{8,9}$/
更好。但还有另一个问题。我需要验证电话号码是否有9-11位数字。例如,如果我使用07格式,我可以使用此代码/^0[17]\d{7,8}$/
,它总共可以有9位数字。而对于01格式,我可以使用此代码/^0[17]\d{8,9}$/
,它总共可以有10到11个数字。我试着在这里有3个数字{7,8,9}
,但它似乎错了,是吗@我不能这样做。国际格式的数字呢?或者如果有其他格式可用?没有什么比拒绝一个我知道是正确的电话号码更糟糕的了,因为某个地方的某个程序员没有充分考虑未来。如果我必须验证,我允许一个可选的前导+
,以及数字和空格的任意组合,并且我允许一些额外的字符用于更长的数字。@ihz如果您想要7-9个数字,请使用{7,9}
而不是{7,8,9}
/^(01\d{8,9})|(07\d{7})$/