仅验证 Laravel 中的字母数字字符
Validate only alphanumeric characters in Laravel
我的 Laravel 5 应用程序中有以下代码:
public function store(Request $request){
$this->validate($request, ['filename' => 'regex:[a-zA-Z0-9_\-]']);
}
我的意图是允许文件名中 仅包含字母数字字符、破折号和下划线 。但是,我的正则表达式不起作用,即使在单个字母上它也会失败。我做错了什么?
可能最容易使用内置的字母数字验证:
https://laravel.com/docs/5.2/validation#rule-alpha-num
$validator = Validator::make($request->all(), [
'filename' => 'alpha_num',
]);
您忘记量化正则表达式,它的格式也不正确。
public function store(Request $request){
$this->validate($request, ['filename' => 'regex:/^[a-zA-Z0-9_\-]*$/']);
}
这将接受空文件名;如果你想接受非空只改变 *
到 +
.
使用laravel规则,
public function store(Request $request){
$this->validate($request, ['filename' => 'alpha_dash']);
}
Laravel validation rule for alpha numeric,dashes and undescore
您需要确保模式匹配整个输入字符串。此外,字母数字和下划线符号可以与 \w
匹配,因此正则表达式本身可以大大缩短。
我建议:
'regex:/^[\w-]*$/'
详情:
^
- 字符串开头
[\w-]*
- 来自 [a-zA-Z0-9_]
范围或 -
s 的零个或多个单词字符
$
- 字符串结尾。
为什么比'alpha_dash'
好:你可以进一步自定义这个模式
我检查了以上解决方案,但在我的版本中不起作用。我的 Laravel v. 5.5.
'address' => "required|regex:/^[0-9A-Za-z.\s,'-]*$/",
我的 Laravel 5 应用程序中有以下代码:
public function store(Request $request){
$this->validate($request, ['filename' => 'regex:[a-zA-Z0-9_\-]']);
}
我的意图是允许文件名中 仅包含字母数字字符、破折号和下划线 。但是,我的正则表达式不起作用,即使在单个字母上它也会失败。我做错了什么?
可能最容易使用内置的字母数字验证:
https://laravel.com/docs/5.2/validation#rule-alpha-num
$validator = Validator::make($request->all(), [
'filename' => 'alpha_num',
]);
您忘记量化正则表达式,它的格式也不正确。
public function store(Request $request){
$this->validate($request, ['filename' => 'regex:/^[a-zA-Z0-9_\-]*$/']);
}
这将接受空文件名;如果你想接受非空只改变 *
到 +
.
使用laravel规则,
public function store(Request $request){
$this->validate($request, ['filename' => 'alpha_dash']);
}
Laravel validation rule for alpha numeric,dashes and undescore
您需要确保模式匹配整个输入字符串。此外,字母数字和下划线符号可以与 \w
匹配,因此正则表达式本身可以大大缩短。
我建议:
'regex:/^[\w-]*$/'
详情:
^
- 字符串开头[\w-]*
- 来自[a-zA-Z0-9_]
范围或-
s 的零个或多个单词字符
$
- 字符串结尾。
为什么比'alpha_dash'
好:你可以进一步自定义这个模式
我检查了以上解决方案,但在我的版本中不起作用。我的 Laravel v. 5.5.
'address' => "required|regex:/^[0-9A-Za-z.\s,'-]*$/",