ruby-on-rails - 如何确定rails中是否有匹配返回true或false?
我想创建一个测试,为电子邮件处理返回 true 或 false。
目前,如果电子邮件地址以 r+ 开头,则为 true,否则为 false。这将帮助我们的服务器忽略我们遇到的大量垃圾邮件。
示例:
[email protected] .. true
[email protected] .. true
[email protected] .. FALSE
使用 Rails/ruby/regex 处理此问题最有效的方法是什么?
谢谢
目标
是 Rails/Ruby 中的一个衬垫,具有:
ABORT if XXXXX == 0
I want to create a test that returns either true or false for email handling.
For now, if the email address starts with r+ then it's true otherwise it's false. This will help our server ignore a lot of the SPAM we are getting hit with.
Examples:
[email protected] .. true
[email protected] .. true
[email protected] .. FALSE
What's the most efficient way to handle this with Rails/ruby/regex?
Thanks
GOAL
Is a one liner in rails/ruby with:
ABORT if XXXXX == 0
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这将匹配:
示例:
由于除了
nil
或false
之外的所有内容在 Ruby 中都是 true,因此您可以在条件中使用此正则表达式。如果你确实想要一个布尔值,你可以使用!!
习惯用法:This will match:
Examples:
Since everything that isn't
nil
orfalse
is truthy in Ruby, you can use this regex in a condition. If you really want a boolean you can use the!!
idiom:如果你在 Rails 中,有一个starts_with?字符串方法:
在 Rails 之外,正则表达式是一个合理的解决方案:
因为 Ruby 在 if 语句中使用真实性,所以如果您最终使用正则表达式,则可以仅使用返回值进行切换:
如果您正在编写一个方法并且想要返回布尔结果,您始终可以使用双爆炸技巧:
Rubular (rubular.com) 是测试 1.9 之前的 Ruby 正则表达式的好网站。 (1.9 的正则表达式添加了诸如前瞻之类的东西。)
If you're in Rails, there's a starts_with? method on strings:
Outside of Rails, regexes are a reasonable solution:
Because Ruby uses truthiness in if statements, if you do end up using regexes, you can just use the return value to switch:
If you're writing a method and want to return a boolean result, you could always use the double bang trick:
Rubular (rubular.com) is a good site for testing Ruby regexes pre-1.9. (1.9's regexes added things like lookahead.)
如果您不想使用“!!”运算符:
您可以使用三元运算符(可能看起来更明显):
If you don't want to use an "!!" operator:
you could use a ternary operator (might look more obvious):
您也可以使用 '===' 运算符
注意:正则表达式部分位于左侧:
You can use the '===' operator as well
Note: The regex part is on the left:
Regexp#match?
已添加到 Ruby-2.4.0.请参阅 Regexp#match 文档。Regexp#match?
was added to Ruby-2.4.0. See Regexp#match documentation.