2009-05-10 10 views

Répondre

2

une expression régulière peut valider que pour vous:

/[\$£¥]\d+(\.\d\d)?/ 

(mais avec le signe euro là aussi)

ce que j'ai donné ne sera pas la façon la plus robuste pour le faire . Vous pourriez changer à votre préférence. Une alternative est d'essayer quelque chose comme ceci:

var myString = "$55.32", 
    currency = parseFloat(myString.replace(/^[^\d\.]*/, '')) 
    valid = !isNaN(currency) 
; 

Il dépouille de toute non-nombre ou . caractères depuis le début et puis comme parse un flotteur.

7

Le problème est triple ici:

  1. Il y a un lot of currency symbols;
  2. Les devises partagent le même symbole ($ signifie-t-il des dollars australiens ou américains par exemple); et
  3. Différences locales dans les nombres d'écriture (par exemple 3 000,00 en anglais est 3'000,00 en allemand).

Mon conseil? Il suffit de prendre des chiffres et d'oublier le symbole monétaire. Si toutefois la détection de la devise est le point entier, sélectionnez-le séparément ou vous devez implémenter au moins un sous-ensemble de la liste de devises ci-dessus plus les différences de paramètres régionaux.

Questions connexes