2012-01-09 36 views
9

Ngoài Javascript của ^$ là tương đương với Ruby \A\z, những gì khác khác biệt tinh tế đang có giữa hai động cơ biểu thức chính quy?Sự khác biệt giữa Ruby 1.9 và Javascript regexp

Tôi đang tìm kiếm sự khác biệt tinh tế nơi regex cùng có thể hành xử khác nhau, ví dụ /^abc$/ sẽ phù hợp này trong Ruby:

123 
abc 
def 

Nhưng nó sẽ không phù hợp trong Javascript.

+1

Ngoài ra còn có sự khác biệt giữa các phiên bản đặc biệt của Ruby. Ruby 1.8 không hỗ trợ các xác nhận phía sau, trong khi Ruby 1.9 thực hiện. – tybro0103

+0

@ tybro0103 Rất tiếc, đã chỉ định phiên bản nào. –

Trả lời

17

Các tính năng được hỗ trợ bởi Ruby, nhưng không phải JavaScript:

  • \a (chuông)
  • \e (thoát)
  • \A (bắt đầu chuỗi)
  • \Z (cuối chuỗi, trước trận chung kết ngắt dòng)
  • \z (cuối chuỗi)
  • Chuyển tiếp tham chiếu \1 qua \9
  • backreferences cho các nhóm thất bại cũng không
  • (?>regex) (nhóm nguyên tử)
  • \G (bắt đầu nỗ lực trận đấu)
  • (?#comment)
  • cú pháp miễn phí-khoảng cách hỗ trợ
  • lớp nhân vật là một mã thông báo duy nhất
  • # bắt đầu nhận xét
  • [:alpha:] nhân vật POSIX lớp
  • (?i) (case insensitive) (JavaScript hỗ trợ /i chỉ)
  • (?s) (dot phù hợp với dòng mới) (?m)
  • (?m) (^$ trận đấu điểm ngắt dòng) (/m chỉ trong JavaScript)
  • (?x) (tự do khoảng cách chế độ)
  • (?-ismxn) (tắt chế độ bổ)
  • (bổ chế độ địa phương nhóm)

Tính năng được hỗ trợ bởi JavaScript, nhưng không phải Ruby:

  • \cA qua \cZ (ký tự điều khiển)
  • \ca qua \cz (điều khiển nhân vật)
  • \u0000 qua \uFFFF (Unicode nhân vật)

Nguồn:

+2

Không chắc chắn làm thế nào up-to-date trang đó, nhưng trong ruby ​​1,9, '\ uXXXX' trình tự được hỗ trợ bởi các công cụ regex. – d11wtq

+0

Lưu ý: * Trang cập nhật lần cuối: 24 tháng 3 năm 2011 * –

+0

Kể từ phiên bản Ruby v2.2, có một số tính năng của Ruby regex không có sẵn trong các điều kiện JS: (? (A) b | c); \ p {sc} thuộc tính unicode; ++ định lượng sở hữu; [a [^ b]] đặt lồng nhau; [a-x && c-z] thiết lập giao lộ; \ h hex loại; \ k backreferences; \ g cuộc gọi subexpression; (? <=, (? Janosch

Các vấn đề liên quan