Laravel 10字符串验证问题:如何禁止输入#字符?
Laravel 10 字符串验证问题解决方案
你当前使用的正则/[^#]*/无法拦截含#的字符串,原因是它仅要求字符串中存在一段不含#的子串——哪怕后面跟着#,验证也会通过。
以下是两种可行的解决方案:
方法一:修正正则表达式
将正则改为/^[^#]+$/,该规则会强制要求整个字符串从开头到结尾都不包含#:
^:匹配字符串起始位置[^#]+:匹配1个及以上非#的字符$:匹配字符串结束位置
修改后的验证代码:
$request->validate([ 'code' => 'required|max:11|regex:/^[^#]+$/', ]);
方法二:使用not_regex规则(更直观)
如果觉得正则写法不够清晰,可以用Laravel内置的not_regex规则,直接指定不能包含#:
$request->validate([ 'code' => 'required|max:11|not_regex:/#/', ]);
这个规则会检查字符串中是否存在#,只要出现就会验证失败,完全符合需求。
内容的提问来源于stack exchange,提问作者agodoo
相关产品推荐
相关产品推荐

