【发布时间】:2018-04-21 10:11:30
【问题描述】:
我正在尝试使用自定义正则表达式规则验证 Laravel 5.4 项目中的纬度/经度(基于此答案:https://stackoverflow.com/a/22007205/2332336)
// Create validation
$validator = Validator::make($request->all(), [
// ...
'lat' => 'required|regex:/^[-]?(([0-8]?[0-9])\.(\d+))|(90(\.0+)?)$/',
'long' => 'required|regex:/^[-]?((((1[0-7][0-9])|([0-9]?[0-9]))\.(\d+))|180(\.0+)?)$/'
], [
'lat.regex' => 'Latitude value appears to be incorrect format.',
'long.regex' => 'Longitude value appears to be incorrect format.'
]);
// Test validation
if ($validator->fails()) {
return redirect()
->back()
->withErrors($validator)
->withInput();
}
运行时,我收到以下错误:
preg_match(): 没有找到结束分隔符'/'
我也试过这个;
'lat' => 'required|regex:^[-]?(([0-8]?[0-9])\.(\d+))|(90(\.0+)?)$',
'long' => 'required|regex:^[-]?((((1[0-7][0-9])|([0-9]?[0-9]))\.(\d+))|180(\.0+)?)$'
现在我收到此错误:
preg_match(): 没有找到结束分隔符 '^'
通过自定义正则表达式规则在 laravel 中验证 lat/lng 的正确语法是什么?
【问题讨论】:
-
看起来你必须使用数组?
-
按范围验证可能更简单,例如:'lat' => 'between:-87,89', 'long' => 'between:-180,180',
标签: php regex laravel latitude-longitude laravel-validation