Theo như tôi biết, Ruby không hỗ trợ thuộc tính Unicode (ít nhất là cho đến khi phiên bản 1.8), do đó bạn có thể cần phải sử dụng
^(?:[^\W\d_]|-)+$
Giải thích: [^\W\d_]
trận đấu bất kỳ chữ cái (theo nghĩa đen có nghĩa là "trận đấu một ký tự không phải là ký tự không phải chữ và số, chữ số hoặc dấu gạch dưới "). Trong trường hợp này, một tiêu cực kép là điều thích hợp để sử dụng. Vì chúng tôi đang sử dụng một lớp nhân vật phủ định, chúng tôi cần phải cho phép -
bằng cách luân phiên.
Lưu ý: Từ regular-expressions.info có vẻ như Ruby chỉ khớp các ký tự ASCII với ký hiệu \w
, vì vậy regex này có thể không hoạt động như dự định. Tôi không có Ruby cài đặt ở đây, nhưng trên rubular.com regex này đang làm việc một cách chính xác.
Các giải pháp thay thế
^[[:alpha:]-]+$
phải phù hợp với các ký tự ASCII theo regular-expressions.info và RegexBuddy, nhưng trên rubular.com nó không làm việc.
Nguồn
2010-07-02 07:26:47
Ngoài ra hãy thử http://rubular.com tài nguyên tốt nhất để kiểm tra các regex ruby của bạn. –