2010-12-11 8 views
0

Ich habe eine Regex, die in Safari und Chrome funktioniert, die den folgenden Fehler in FireFox gibt.Was bedeutet das d-Flag in einer 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; 

Ich hatte vor dieser RegEx ein paar Wochen gekämpft und hatte sie zur Seite gelegt, so dass ich nicht über einen Link auf die Seite, die mich dazu gebracht, die ‚d‘ Flag zu verwenden. Ein Zeiger auf einen Verweis, der das d-Flag enthält, wäre ein solider Start, um mein Problem zu lösen.

+0

Welchen Effekt hat es in Safari und Chrome? – BoltClock

+3

Webkit wird glücklich '/ string/zxcvbgi' aufnehmen, das ungültige' zxcvb' ignorieren und immer noch die gültigen 'gi' Flags anwenden. Nicht so Firefox. –

+0

@Ken Redler - bitte posten Sie eine Antwort und ich werde es akzeptieren. – vkraemer

Antwort

2

Webkit-Browser sind in diesem Fall tolerant, und wird so etwas wie dieses annehmen:

/theregex/zxcvbgi 

Statt Werfen am Fehler, sie sehen es als:

/theregex/gi 

Firefox, jedoch wird Objekt auf ungültige Flags. Nick weist in seiner Antwort auf die gültigen hin.

6

Es gibt keine d Flagge, die Ihr Problem ist :) Es gibt:

  • g - Die globale Suche (mehrere Ursachen)
  • i - Ignorieren Fall
  • m - Multiple Input
0

Sind Sie sicher, dass es wirklich tut etwas in Chrome? Ich habe versucht:

/projects\/[^/]+/zyx 

Er akzeptiert, dass als /projects\/[^/]+/, aber ich bezweifle diejenigen stark alle realen Erweiterungen sind. Es ignoriert sie einfach. Wie von Ken bemerkt, wird es gültige Flags behalten, selbst wenn ungültige vorhanden sind.

Auch ich empfehle Ihnen, eine good tutorial zu folgen, anstatt nur schneiden und einfügen.