2012-01-09 9 views
9

Oprócz JavaScript na ^ i $ równoważne Ruby \A i \z, jakie inne subtelne różnice są tam między dwoma silnikami regularnych wyrażeń?Różnice między Ruby 1.9 i Javascript regexp

szukam subtelnych różnic, gdzie ten sam regex mogą zachowywać się w różny sposób, na przykład /^abc$/ będzie pasował to w Ruby:

123 
abc 
def 

Ale to nie będzie pasował w JavaScript.

+1

Istnieją również różnice między poszczególnymi wersjami Rubiego. Ruby 1.8 nie obsługuje twierdzeń typu look-behind, natomiast Ruby 1.9 to robi. – tybro0103

+0

@ tybro0103 Ups, powinienem określić, która wersja. –

Odpowiedz

17

funkcji obsługiwanych przez Ruby, ale nie javascript:

  • \a (dzwon)
  • \e (ucieczka)
  • \A (początek sznurka)
  • \Z (koniec sznurka, przed ostatecznym linia podziału)
  • \z (koniec ciągu)
  • Forward odwołuje \1 przez \9
  • wstecznych do grup również nie powiedzie
  • (?>regex) (grupa atomowa)
  • \G (początek meczu próbie)
  • (?#comment)
  • składnia Free-rozstaw obsługiwane
  • klasy postaci to pojedynczy token
  • # rozpoczyna komentarz
  • [:alpha:] charakter POSIX klasy
  • (?i) (wielkość liter ma znaczenie) (JavaScript obsługuje /i tylko)
  • (?s) (kropka pasuje newlines) (?m)
  • (?m) (^ i $ mecz na przerwy linii) (/m tylko JavaScript)
  • (?x) (tryb wolny odstęp)
  • (?-ismxn) (wyłączyć modyfikatory MODE)
  • (modyfikatory tryb lokalnym grupa)

funkcji obsługiwanych przez JavaScript, ale nie Ruby:

  • \cA przez \cZ (znak kontrolny)
  • \ca przez \cz (znak kontrolny)
  • \u0000 przez \uFFFF (Unicode)

Źródło:

+2

Nie wiem, jak aktualna jest ta strona, ale w Rubin 1.9 sekwencje '\ uXXXX' są obsługiwane przez silnik regex. – d11wtq

+0

Uwaga: * Ostatnia aktualizacja strony: 24 marca 2011 r. * –

+0

Od wersji Ruby v2.2 jest kilka funkcji regex z Ruby, które nie są dostępne w JS: (? (A) b | c) warunkowych; \ p {sc} właściwości unicode; ++ kwantyfikatory dzierżawcze; [a [^ b]] ustawia zagnieżdżanie; [a-x && c-z] ustaw przecięcie; \ h typy heksadecymalne; \ k backreferences; \ g wywołania podwyrażeń; (? <=, (? Janosch

Powiązane problemy