AnA*_*ice 19 ruby regex ruby-on-rails gsub ruby-on-rails-3
我想创建一个测试,返回true或false以进行电子邮件处理.
现在,如果电子邮件地址以r +开头,那么它是真的,否则它是假的.这将有助于我们的服务器忽略我们遇到的很多垃圾邮件.
例子:
r+kldslkadslkadslk@site.com .. true
r+123123312@site.com .. true
vigraaaa@site.com .. FALSE
Run Code Online (Sandbox Code Playgroud)
使用Rails/ruby/regex处理此问题的最有效方法是什么?
谢谢
目标
是导轨/红宝石中的一个衬垫:
ABORT if XXXXX == 0
Run Code Online (Sandbox Code Playgroud)
Mic*_*ohl 34
这将匹配:
/^r\+.*@site.com$/
Run Code Online (Sandbox Code Playgroud)
例子:
>> 'r+kldslkadslkadslk@site.com' =~ /^r\+.*@site.com$/ #=> 0
>> 'vigraaaa@site.com' =~ /^r\+.*@site.com$/ #=> nil
Run Code Online (Sandbox Code Playgroud)
由于Ruby中的所有内容都不是nil
或者false
是真的,你可以在一个条件下使用这个正则表达式.如果你真的想要一个布尔值,你可以使用这个!!
成语:
>> !!('vigraaaa@site.com' =~ /^r\+.*@site.com$/) #=> false
>> !!('r+kldslkadslkadslk@site.com' =~ /^r\+.*@site.com$/) #=> true
Run Code Online (Sandbox Code Playgroud)
Kyl*_*yle 10
如果你在Rails中,有一个starts_with?字符串上的方法:
"foo".starts_with?('f') # => true
"foo".starts_with?('g') # => false
Run Code Online (Sandbox Code Playgroud)
在Rails之外,正则表达式是一个合理的解决方案:
"foo" =~ /^f/ # => true
"foo" =~ /^g/ # => false
Run Code Online (Sandbox Code Playgroud)
因为Ruby在if语句中使用了真值,如果你最终使用正则表达式,你可以使用返回值来切换:
if "foo" =~ /^f/
puts "Was true!"
else
puts "Was false!"
end
Run Code Online (Sandbox Code Playgroud)
如果你正在编写一个方法并希望返回一个布尔结果,你总是可以使用双重技巧:
def valid_email?
!!("foo" =~ /^f/)
end
Run Code Online (Sandbox Code Playgroud)
Rubular(rubular.com)是测试1.9之前的Ruby正则表达式的好站点.(1.9的正则表达添加了诸如前瞻之类的东西.)
如果你不想使用"!!" 运营商:
!!("foo" =~ /^f/)
Run Code Online (Sandbox Code Playgroud)
你可以使用三元运算符(可能看起来更明显):
"foo" =~ /^f/ ? true : false
Run Code Online (Sandbox Code Playgroud)
您可以使用"==="操作符,以及
/f/ === 'foo' #=> true
/f/ === 'bat' #=> false
Run Code Online (Sandbox Code Playgroud)
注意:正则表达式部分位于左侧:
/ YOUR_REGEX/==='YOUR_STRING'
归档时间: |
|
查看次数: |
22267 次 |
最近记录: |