2010-08-06 2 views
0

J'ai la chaîne suivante: '', ou '4. ', ou' * .4 'ou' 4.35 ' tous les formats ci-dessus sont valides, d'autres sont tous invalides. essentiellement, si je ne me soucie pas le caractère de chiffres ou un mot, voici ce que je en PHP pour la validation:comment faire l'expression rationnelle dans javascript pour cette chaîne?

 else if (!ereg('^\*|.*\..*$',$bl_objver)) 

Maintenant, je voudrais ajouter une validation clientside, donc je traduis juste en javascript:

var ver_reg = new RegExp("^\*|.*\..*$"); 
    if (ver_reg.test(obj_ver) == false) 

mais firebug montre toujours une erreur, comme: "quantificateurs invalide | .. * $" etc ..

des suggestions?

Répondre

0

(. Je ne suis pas convaincu que votre expression est correcte, mais pour le moment d'aller juste avec ce que vous avez)

Utilisation de l'objet RegExp, vous devez échapper aux barres obliques:

var ver_reg = new RegExp("^\\*|.*\\..*$"); 

vous pouvez également utiliser la notation littérale regex:

var ver_reg = /^\*|.*\..*$/; 


Cela répond à votre question directement, mais ...

En ce qui concerne l'expression, eh bien, ce que vous voulez certainement corriger les points d'ancrage est de début/fin chaque application d'un côté de l'alternance.

-à-dire que vous dites <this>|<that><this> est ^\* et <that> est .*\..*$

Ce que vous voulez est ^(?:<this>|<that>)$ pour assurer les marqueurs de début/fin ne font pas partie des alternatives (mais en utilisant ?: puisque nous ne sommes pas la capture le groupe). En utilisant le second exemple ci-dessus, cette correction devrait également s'appliquer à la version de PHP (qui peut utiliser la même syntaxe).

Je voudrais aussi remettre en question votre utilisation de . au lieu de \w ou [^.] ou similaire, mais sans savoir ce que vous êtes en train de faire, je ne peux pas dire avec certitude ce qui est le plus logique.

Espérons que cela aide! :)

+0

merci, je viens de trouver quelques explications à ce sujet: http://www.regular-expressions.info/javascript.html – WilliamLou

+0

Ouais, c'est un bon site - il vaut la peine de lire et d'apprendre autant que possible à partir de cela. :) –

Questions connexes