sto implementando un gestionale di locations dove ho predisposto anche
i campi “latitude” e “longitude”. in tali campi verranno inseriti dei
numeri nel formato “xx.xxxx” oppure lasciati vuoti.
per tale scopo ho aggiunto questo nel model:
validates_format_of :latitude, :with => /^\d{1,3}.\d{4}$|^$/, :message
=> " può contenere numeri in questo formato: 000.0000"
validates_format_of :longitude, :with => /^[0-9]{1,3}.[0-9]{4}$|^$/,
:message => " può contenere numeri in questo formato: 000.0000"
ho notato però che la regexp non “filtra bene gli errori”: infatti se
inserisco un valore con l’ ultima cifra terminante per “0” non mi
accetta il valore.
ho provato quindi a testare la regexp con textmate su dei testi dove ho
inserito dei dati soddifacenti al pattern, ma in questo caso l’ editor
mi trova correttamente anche i valori terminanti con “0”.
Come posso risolvere la corretta validazione anche degli zeri finali?
On Sep 1, 2008, at 3:26 PM, Aldo I. wrote:
validates_format_of :latitude, :with => /^\d{1,3}.\d{4}$|^$/, :message
> => " può contenere numeri in questo formato: 000.0000"
> validates_format_of :longitude, :with => /^[0-9]{1,3}.[0-9]{4}$|^$/,
> :message => " può contenere numeri in questo formato: 000.0000"
Ciao, non sono un esperto di Ruby e Rails, ma se quella Regexp va
letta come una Regexp in Perl… mi sembra ci siano degli errori:
l’operatore . significa qualsiasi carattere, se vuoi usarlo come
“punto” devi escaparlo con \ (.)
non capisco il |^$ finale, dovrebbe signficare “oppure una riga vuota”?
In io farei:
/^[0-9]{1,3}.[0-9]{4}$/
che ne pensate?
In irb:
regexp = /^[0-9]{1,3}.[0-9]{4}$/
subject = “100.3492”
irb(main):027:0> puts “success” if subject =~ regexp
success
=> nil
e se faccio:
subject = “100.3400”
irb(main):031:0> puts “success” if subject =~ regexp
success
=> nil
che mi sembra sia quello che cerchi…
Inoltre:
subject = “100.34”
puts “success” if subject =~ regexp
=> nil
Ciao!
P.S: domanda agli amministratori, la mia risposta verra’ postata nel
forum? visto che risponde a una mail che arriva dal forum?
Tucano wrote:
l’operatore . significa qualsiasi carattere, se vuoi usarlo come
“punto” devi escaparlo con \ (.)
hai ragione, adesso ho corretto
non capisco il |^$ finale, dovrebbe signficare “oppure una riga vuota”?
proprio così
il risultato purtroppo è lo stesso di prima: non mi accetta valori con
lo zero sulla cifra finale.
grazie.