ruby-on-rails - Rails 中的正则表达式验证
问题描述
我是 rails 新手,我正在尝试注册我的用户名,但不使用特殊字符和空格,但允许使用 - 符号。
Example :
@@Pierre! => invalid
Pierre-Louis => valid
Pierre Louis => invalid
在 User.rb 文件中,我有:
class User < ApplicationRecord
...
validates :first_name, presence: true, length: {maximum: 25}, format: {with: Regexp.new('[^0-9A-Za-z-]')}
...
我没有任何错误消息,我仍然可以使用特殊字符进行注册。
另外,如果名称未经验证,我想添加一条错误消息。
你有线索吗?
任何帮助将非常感激 !
解决方案
当您使用正则表达式验证格式时,您需要确保匹配正在验证的整个字符串。为了做到这一点,您的正则表达式需要以标记字符串开头和结尾的锚点开头和结尾\A
。\z
在你的情况下:
validates :first_name,
presence: true,
length: {maximum: 25},
format: {with: /\A[-0-9A-Za-z]\z'/}
message: "Custom message"
假设您接受数字、大小写字母和减号。
推荐阅读
- android - Android导航组件如何保存BottomNavigationBar片段状态
- request - 页面加载后的 Web 组件被破坏
- c# - 如何正确地将多个 cv::Mat 从 c++ dll 传递给 opencvsharp Mat c#?
- rest - 使用 REST 的 VSTS NuGet 发布
- illegalaccessexception - 如何通过调用另一个类中对象的方法来打印while循环
- javascript - 无法更改图标图像(反应)
- ruby-on-rails - 创建特定范围HABTM Rails 6
- javascript - React-Router-dom 重定向中断标头链接
- mysql - 本地主机/Joomla 显示“错误”,没有更多信息
- matlab - Inno Setup - 防止桌面快捷方式打开子文件夹,而不是运行同名的可执行文件