2010-11-25 5 views
0

J'écris une fonction regex afin que je puisse tester une chaîne pour quelques options.Javascript Regex pour vérifier la chaîne en ligne avec les caractères pré et post

Voici quelques exemples de chaînes que je veux rechercher.

5.6 - 6.6* 
5.6 - 6.6(4) 
<5.6 - 6.6** 

Fondamentalement, ce que je veux obtenir est une correspondance dans la chaîne de l'une de ces options. En gardant à l'esprit que je passe dans une variable qui est quelque chose comme (5.6 - 6.6) dans ce cas. Certaines de mes valeurs ont "*" à la fin et d'autres non, donc j'ai besoin de tester quand ils le font OU ne le font pas. Mais encore besoin d'un match.

MY CODE WHICH WORKS ON "5.6 - 6.6*" 

fieldValuesArray[0] = "5.6 - 6.6" 

myregexp = new RegExp("\\b(<)?"+ fieldValuesArray[0]+"(\\*\\(\\)1234)?\\b") 

testRegEx = myregexp.test("<5.6 - 6.6**") 
    if(testRegEx == false){ 
    hide = "yes" 
} 

Il fonctionne quand il n'y a pas « < » au beggining mais quand il y a un, il ne peut pas trouver la valeur.

J'espère que quelqu'un peut vous aider.

Répondre

1

Vous devez vous rappeler que la chaîne que vous vérifiez contient également des caractères regex, c'est-à-dire le caractère '.' caractère qui signifie qu'il va correspondre à n'importe quel caractère, donc "5^6 - 6 $ 6" correspondra donc ceux-ci doivent s'échapper (utiliser comme '.' pour correspondre à une période littérale).

pour répondre à vos trois exemples qui suit fonctionnera:

.*?5\.6\s-\s6\.6(\*+|\(\d*\)) 

Vous pouvez voir là, je l'ai échappé aux périodes et spécifié espace blanc plutôt que des caractères espaces. Cela garantit qu'il y a un caractère espace blanc dans votre chaîne plutôt que d'être un espace blanc dans votre regex.

Questions connexes