2010-07-02 27 views
5

Tôi muốn viết cụm từ thông dụng để Xác thực tên. Cụm từ thông dụng phải bao gồm tất cả các bảng chữ cái (ký tự latin/french/german, v.v.). Tuy nhiên tôi muốn loại trừ các số từ nó và cũng cho phép -. Vì vậy, về cơ bản nó là \w (trừ) số (cộng) -.Regex trong đường ray để khớp với [ w] và "-" nhưng không phải là số

Vui lòng trợ giúp.

+0

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. –

Trả lời

5

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.

+0

Có thể coz nó không phải là ruby ​​cụ thể? –

+0

@Shripad K: Ý bạn là gì? –

0

Nếu bạn muốn có một giải pháp ruby ​​cụ thể cho vấn đề xác nhận của bạn sau đó bạn có thể sử dụng này:

^[\D-]+$ 

Bạn có thể kiểm tra permalink này ở đây:

http://rubular.com/r/VrAIB4TkwJ

Tôi đã thực hiện điều này một cộng đồng wiki để mọi người có thể dùng thử và tốt hơn regex nếu cần.

Hy vọng điều này sẽ hữu ích. Chúc mừng :)

+0

Không thực sự. Điều này khớp với mọi thứ trừ các chữ số, bao gồm các chuỗi như '! '§ $% &' - không phải là những gì Dinesh cần. –

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