Differences between Ruby 1.9 and Javascript regexp

Apart from Javascript's ^ and $ being equivalent to Ruby's \A and \z, what other subtle differences are there between the two regular expression engines?

I'm looking for subtle differences where the same regex might behave differently, for example /^abc$/ will match this in Ruby:


But it won't match in Javascript.



Features supported by Ruby, but not JavaScript:

  • \a (bell)
  • \e (escape)
  • \A (start of string)
  • \Z (end of string, before final line break)
  • \z (end of string)
  • Forward references \1 through \9
  • Backreferences to failed groups also fail
  • (?>regex) (atomic group)
  • \G (start of match attempt)
  • (?#comment)
  • Free-spacing syntax supported
  • Character class is a single token
  • # starts a comment
  • [:alpha:] POSIX character class
  • (?i) (case insensitive) (JavaScript supports /i only)
  • (?s) (dot matches newlines) (?m)
  • (?m) (^ and $ match at line breaks) (/m only in JavaScript)
  • (?x) (free-spacing mode)
  • (?-ismxn) (turn off mode modifiers)
  • (?ismxn:group) (mode modifiers local to group)

Features supported by JavaScript, but not Ruby:

  • \cA through \cZ (control character)
  • \ca through \cz (control character)
  • \u0000 through \uFFFF (Unicode character)



Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.