2009-06-22 6 views
2

J'ai écrit une expression régulière
^ ([+/-]? ([0-9] + (.)?) | ([0-9] *. [0-9] +))
$ Je crée par deux façons
Une question sur RegExp en Javascript

var _regex = "^([+/-]?([0-9]+(\.)?)|([0-9]*\.[0-9]+))$"; 
var _regexFloat = new RegExp(_regex); 

et

var _regexFloat = /^([+/-]?([0-9]+(\.)?)|([0-9]*\.[0-9]+))$/ ; 

les données de test est "1a" et "A1". À la deuxième manière, cela fonctionne très bien.
mais dans un premier temps, il retourne vrai. Est-ce que quelqu'un peut me suggérer si j'ai quelque chose de mal?

Merci beaucoup.

Environnement:

Windows Server 2003
IE 6

+0

Bonjour, quel est ce regex pour? Est-ce pour savoir si une chaîne contient un flotteur? –

Répondre

5

Je crois que vous aurez besoin d'échapper à ces anti-slash dans la chaîne (dans la première version).

Essayez ceci:

var _regex = "^([+/-]?([0-9]+(\\.)?)|([0-9]*\\.[0-9]+))$"; 
var _regexFloat = new RegExp(_regex); 
+2

Bien sûr, c'est exactement pourquoi la deuxième syntaxe existe. S'échapper le rend moins lisible. –

+0

Je suis d'accord, j'utilise la deuxième version. –