在我阅读的文档中:

使用\A和\z匹配字符串的开头和结尾,^和$匹配行的开头/结尾.

我将应用一个正则表达式来判断用户提交的用户名(或邮箱是相同的).模型中的validates_format_of应该使用哪个表达式?我不明白其中的区别:我一直使用^和$...

推荐答案

如果您依赖正则表达式进行验证,则始终希望使用\A\z.因为他们只会在me@example.com\n<script>dangerous_stuff();</script>$之前验证所有的东西,比如说,他们只能在$me@example.com\n<script>dangerous_stuff();</script>之前验证所有的东西.

我的建议是事先完全从用户名或邮箱中删除新行,因为几乎没有合法的理由这样做.然后您可以安全地使用\A\z^$.

Ruby相关问答推荐

Ruby将字符串中的反斜杠替换为双反斜杠

关键字if是什么对象类型/类?

配置 SubLime Linter 插件以使用 Ruby 1.9 语法

如何记录在 Ruby 程序中调用的每个方法?

如果浮点组件不是 .00 sprintf/printf,则仅显示小数点

如何将参数传递给 array.map 快捷方式?

如何使用 RVM 重新编译 ruby​​?

Ruby 模块 - 包括 do 结束块

Ruby:继承与类变量一起工作的代码

如何引用全局变量和类变量?

如何设置方法测试中使用的私有实例变量?

如何在 Mac OS X Lion 中安装 Ruby 1.9.3?

在 Ruby 中, coerce() 是如何工作的?

Ruby 哈希白名单过滤器

Ruby on Rails switch

以小时为单位的时差

未加载库:/opt/local/lib/libssl.1.0.0.dylib (LoadError)

要散列的散列数组

为什么 Ruby 有 TrueClass 和 FalseClass 而不是一个布尔类?

你可以在Ruby中使用分号吗?