2010-12-11 8 views
0

J'ai une regex, qui semble fonctionner dans Safari et Chrome qui donne l'erreur suivante dans FireFox.Que signifie le drapeau d dans un javascript RegEx?

Error: invalid regular expression flag d 
Source File: http://java.net/projects/mq 
Line: 194, Column: 34 
Source Code: 
    var vbkpatt1=/projects\/[^/]+/di; 

j'avais combattu cette RegEx il y a deux semaines et il avait mis de côté, donc je n'ai pas un lien vers la page qui m'a amené à utiliser le drapeau « d ». Un pointeur vers une référence qui inclut le drapeau d serait un bon début pour résoudre mon problème.

+0

Quel effet cela a-t-il dans Safari et Chrome? – BoltClock

+3

Webkit utilisera heureusement '/ string/zxcvbgi', en ignorant le' zxcvb' invalide, tout en appliquant les indicateurs 'gi' valides. Pas si Firefox. –

+0

@Ken Redler - s'il vous plaît poster une réponse et je vais l'accepter. – vkraemer

Répondre

2

navigateurs Webkit sont plus tolérants dans ce cas, et accepteront quelque chose comme ceci:

/theregex/zxcvbgi 

au lieu de jeter h erreur, ils le voient comme: cependant,

/theregex/gi 

Firefox, sera objet à tous les indicateurs invalides. Nick souligne les valides dans sa réponse.

6

Il n'y a pas de drapeau d, qui est votre problème :) Il y a:

  • g - la recherche globale (plusieurs correspondances)
  • i - Ignorer la casse
  • m - entrée multiple
0

Etes-vous sûr qu'il fait quelque chose dans Chrome? J'ai essayé:

/projects\/[^/]+/zyx 

Il accepte que /projects\/[^/]+/, mais je doute fortement ce sont toutes les extensions réelles. C'est juste les ignorer. comme l'a noté Ken, il gardera des drapeaux valides même si des invalides sont présents.

En outre, je vous recommande de suivre un good tutorial, plutôt que de simplement couper et coller.

Questions connexes