在我阅读的文档中:
使用\ A和\ z匹配字符串的开头和结尾,^和$匹配行的开头/结尾.
我将应用正则表达式来检查用户提交的用户名(或电子邮件是否相同).我应该validates_format_of
在模型中使用哪个表达式?我无法理解其中的区别:我一直用^和$ ...
Luk*_*uke 211
如果您依赖于正则表达式进行验证,那么您总是希望使用\A
和\z
.^
并且$
只会匹配到换行符,这意味着他们可以使用类似的电子邮件me@example.com\n<script>dangerous_stuff();</script>
并且仍然可以验证,因为正则表达式只能看到之前的所有内容\n
.
我的建议只是事先从用户名或电子邮件中完全删除新行,因为几乎没有正当理由.然后你可以安全地使用EITHER \A
\z
或^
$
.
And*_*are 15
字符串的开头和结尾可能不一定与行的开头和结尾相同.想象一下,如果您使用以下作为测试字符串:
我的
名字
是
安德鲁
请注意,该字符串中有许多行-中^
和$
人物让你匹配线(基本治疗的开始和结束\n
的字符作为分隔符),而\A
并\Z
允许您匹配整个字符串的开头和结尾.
差异示例
/^foo$/
匹配以下任何一项,/\Afoo\z/
不符合:whatever1
foo
whatever2
Run Code Online (Sandbox Code Playgroud)
foo
whatever2
Run Code Online (Sandbox Code Playgroud)
whatever1
foo
Run Code Online (Sandbox Code Playgroud)
/^foo$/
并且/\Afoo\z/
所有符合以下内容:foo
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
79770 次 |
最近记录: |