php - 在 Laravel 验证正则表达式规则中验证纬度/经度 - preg_match() : No ending delimiter '/' found

标签 php regex laravel latitude-longitude laravel-validation

<分区>

我正在尝试使用自定义正则表达式规则验证 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(): No ending delimiter '/' found

这个我也试过;

    '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(): No ending delimiter '^' found

通过自定义正则表达式规则在 Laravel 中验证经纬度的正确语法是什么?

最佳答案

有没有可能是管道的问题?参见,例如,Laravel 5.4 - Validation with Regex .我看到您的正则表达式中有一个管道字符。尝试将规则分成一个数组,而不是在此处使用管道:required|regex

在第二个例子中,第一个^被解释为开始正则表达式字符串的字符,因此它期望最终的 ^来匹配它。

关于php - 在 Laravel 验证正则表达式规则中验证纬度/经度 - preg_match() : No ending delimiter '/' found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47184526/

相关文章:

php - 如何在不覆盖任何值的情况下合并两个集合

php - 与 Laravel 8 上的 setKeysForSaveQuery() 覆盖不兼容的方法

php - 在 Debian 9 上安装 HHVM

javascript - 修改无效的javascript

java - 分隔符之间的正则表达式匹配

php - 在这种情况下,哪个更适合匹配正则表达式或 parse_url

php - 无法在 Tinker 中使用 Laravel Factory

php - 在 PHP 中执行数组交集时如何保留多维数组信息?

php - 页面处理完成后,数据库连接会立即关闭吗?

php从mysql获取信息