2011-07-11 38 views
8

Tôi cần phải khớp với tổng kiểm tra md5 theo cụm từ thông dụng trong chương trình Ruby (thực sự là Rails). Tôi phát hiện ra một nơi nào đó mà tôi có thể phù hợp với chuỗi thập lục phân với trình tự \h, nhưng tôi không thể tìm thấy liên kết nữa.Ruby: thập lục phân trong biểu thức chính quy

Tôi đang sử dụng chuỗi đó và mã của tôi đang hoạt động trong Ruby 1.9.2. Tôi có thể làm cho nó làm việc ngay cả dưới IRB đồng bằng (vì vậy nó không phải là một phần mở rộng Rails).

ruby-1.9.2-p180 :007 > "123abcdf" =~ /^\h+$/; $~ 
=> #<MatchData "123abcdf"> 
ruby-1.9.2-p180 :008 > "123abcdfg" =~ /^\h+$/; $~ 
=> nil 

Tuy nhiên IDE đánh dấu biểu thức đó là sai và tôi không thể tìm thấy bất kỳ tham chiếu nào trích dẫn chuỗi đó.

Có phải là pháp luật \h hợp pháp trong Ruby Regex trong bất kỳ môi trường/phiên bản nào hay tôi nên tin tưởng ide của mình và thay thế bằng một cái gì đó như [abcdef\d]?

+0

Bạn nên kiểm tra/\ A \ h + \ Z/xem http://sakurity.com/blog/2015/06/04/mongo_ruby_regexp.html – Daniel

Trả lời

10

Vâng. Kiểm tra the official doc để có tài liệu hoàn chỉnh về regex trong Ruby.

Lưu ý rằng \h sẽ phù hợp chữ hoa quá, vì vậy nó thực sự tương đương với [a-fA-F\d]

+0

Hoàn hảo, là những gì tôi cần. Cảm ơn câu trả lời của bạn. – Fabio

+0

Một lưu ý nhỏ - nó cũng sẽ khớp với số nguyên, do đó toàn bộ lớp học là [a-fA-Z0-9]. – jdc

+0

@jdc: '\ d' giống với' [0-9] ' –

4

Theo this \ h là một phần của oniguruma, mà tôi tin là tiêu chuẩn trong ruby ​​1.9.

+0

Tham khảo tốt cho cụm từ thông dụng, cảm ơn. – Fabio

+1

Chính xác. \ h không hoạt động trong Ruby 1.8.7 –

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