ruby-on-rails - expresiones - gsub ruby example
¿Cómo determinar si hay una coincidencia y una devolución verdadera o falsa en los rieles? (4)
Esto coincidirá con:
/^r/+.*@site.com$/
Ejemplos:
>> ''[email protected]'' =~ /^r/+.*@site.com$/ #=> 0
>> ''[email protected]'' =~ /^r/+.*@site.com$/ #=> nil
Como todo lo que no es nil
o false
es verdadero en Ruby, puedes usar esta expresión regular en una condición. Si realmente quieres un booleano puedes usar el !!
idioma:
>> !!(''[email protected]'' =~ /^r/+.*@site.com$/) #=> false
>> !!(''[email protected]'' =~ /^r/+.*@site.com$/) #=> true
Quiero crear una prueba que devuelva verdadero o falso para el manejo del correo electrónico.
Por ahora, si la dirección de correo electrónico comienza con r +, entonces es cierto, de lo contrario es falso. Esto ayudará a nuestro servidor a ignorar gran parte del SPAM con el que nos estamos golpeando.
Ejemplos:
[email protected] .. true
[email protected] .. true
[email protected] .. FALSE
¿Cuál es la manera más eficiente de manejar esto con Rails / ruby / regex?
Gracias
GOL
Es un forro en rieles / rubí con:
ABORT if XXXXX == 0
Puedes usar el operador ''==='' también
/f/ === ''foo'' #=> true
/f/ === ''bat'' #=> false
Nota: la parte de expresiones regulares está a la izquierda:
/ YOUR_REGEX / === ''YOUR_STRING''
Si estás en Rails, hay un starts_with? Método en cuerdas:
"foo".starts_with?(''f'') # => true
"foo".starts_with?(''g'') # => false
Fuera de Rails, las expresiones regulares son una solución razonable:
"foo" =~ /^f/ # => true
"foo" =~ /^g/ # => false
Debido a que Ruby usa la verdad en las declaraciones if, si terminas usando expresiones regulares, puedes usar el valor de retorno para cambiar:
if "foo" =~ /^f/
puts "Was true!"
else
puts "Was false!"
end
Si estás escribiendo un método y quieres devolver un resultado booleano, siempre puedes usar el truco del doble golpe:
def valid_email?
!!("foo" =~ /^f/)
end
Rubular (rubular.com) es un buen sitio para probar las expresiones regulares de Ruby pre-1.9. (Las expresiones regulares de 1.9 agregaron cosas como lookahead).
Si no quieres usar un "!!" operador:
!!("foo" =~ /^f/)
podría usar un operador ternario (podría parecer más obvio):
"foo" =~ /^f/ ? true : false