11

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:

123
abc
def

But it won't match in Javascript.

2
  • 1
    There's also differences between particular versions of Ruby. Ruby 1.8 does not support look-behind assertions, while Ruby 1.9 does. Commented Jan 9, 2012 at 3:53
  • @tybro0103 Oops, should've specified which version. Commented Jan 9, 2012 at 4:24

1 Answer 1

18

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)

Source:

Sign up to request clarification or add additional context in comments.

2 Comments

Not sure how up-to-date that page is, but in ruby 1.9, \uXXXX sequences are supported by the regex engine.
As of Ruby v2.2, there are some more Ruby regex features which are not available in JS: (?(a)b|c) conditionals; \p{sc} unicode properties; ++ possessive quantifiers; [a[^b]] set nesting; [a-x&&c-z] set intersection; \h hex types; \k backreferences; \g subexpression calls; (?<=, (?<!, \K lookbehind; \u1F216, [😁-😲] astral plane chars and ranges.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.