我已经在laravel中测试并实现了正则表达式,但它向我显示了错误。请看看这个
EmployerSignupRequest.php
'ephone' => 'required|regex:/^[((\+)|0)[.\- ]?[0-9][.\- ]?[0-9][.\- ]?[0-9]+$/',
我收到了这个错误。
preg_match():/var/www/html/jobma/vendor/laravel/framework/src/Illuminate/Validation/Validator.php:1370
找不到结尾分隔符'/'当我在php中运行时,这工作正常
<?php
$subject = "+91-9041742722";
$pattern = '/^[((\+)|0)[.\- ]?[0-9][.\- ]?[0-9][.\- ]?[0-9]+$/';
preg_match($pattern, substr($subject,3), $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
?>
答案 0 :(得分:3)
我认为你在这里缺少语法。你可以使用下面的模式来表达你的正则表达式。
array('phone' => 'required', 'required|regex:/^\+?[^a-zA-Z]{5,}$/');
答案 1 :(得分:2)
首先,您需要使用数组,因为您的模式包含管道。见the docs:
使用
regex
模式时,可能需要在数组中指定规则而不是使用管道分隔符,尤其是在正则表达式包含管道符时。
此外,您的模式以[((\+)|0)[.\- ]?
可选字符类开头,该字符类与(
或+
,)
,|
,0
匹配, [
,-
或空格。我想您要匹配0
或+
,可选地后跟分隔符,因此请将其替换为[0+][.\- ]
。
使用
'ephone' => ['required', 'regex:/^[0+][.\- ]?[0-9][.\- ]?[0-9][.\- ]?[0-9]+$/'],
如果+
或0
是可选的,请在?
之后添加[0+]
(这与0
或文字{{1}匹配如果你之后添加+
,这将是可选的,匹配模式的1或0次出现。)
您可以在the regex101.com online regex tester进一步测试正则表达式。