Digamos que tengo la siguiente matriz de direcciones
array = ["1 New Street, Filton Grove, Bristol BD7 0AA", "2 New Street, Filton Grove, Bristol BD7 0AA", "3 New Street, Filton Grove, Bristol BD7 0AA"]
Me gustaría verificar que cada elemento de la matriz contenga las palabras Filton Grove Bristol
, pero como hay comas dentro de la dirección, me está arrojando un poco.
¿Cómo ignoro las comas y verifico que cada palabra exista en cada iteración de la matriz?
Hasta ahora tengo esto
regexp = /^Filton Grove Bristol/i
array.all? { |a| regex =~ a }
Pero esto falla.
Respuestas
2 para la respuesta № 1Podrías buscar palabras por separado.
regexp_checks = [/Filton/i, /Grove/i, /Bristol/i]
array.all? { |a| regexp_checks.all?{|rgx| a =~ rgx} }
2 para la respuesta № 2
Si las tres palabras deben estar en la secuencia específica, intente esto:
regexp = /Filton[,s]+Grove[,s]+Bristol/i
2 para la respuesta № 3
También puede verificar de esta manera ...
regexp_checks = [/Filton.*?Grove.*?Bristol/i]
array.all? { |a| regexp_checks.all?{|rgx| a =~ rgx} }
Nota: Use esto solo si desea mantener el orden de las palabras que aparecen. Y si el orden es importante y no se deben permitir otras palabras entre ellas ... puede usar
regexp_checks = [/FiltonW+GroveW+Bristol/i]
2 para la respuesta № 4
Pruebe la siguiente expresión regular
regexp = /Filton Grove,?s*Bristol/i
No necesitas el ^
en tu regex
1 para la respuesta № 5
Para todos los casos de uso posibles
regexp = /Filton[s,s]*Grove[s,s]*Bristol/i