2010-03-06 37 views
11

Tôi muốn chỉ cho phép nhập dữ liệu từ bảng chữ cái tiếng Anh và từ bảng chữ cái từ Đức.Làm thế nào để khớp bảng chữ cái quốc tế (tiếng Anh a-z, + không phải tiếng Anh) với cụm từ thông dụng?

Giống như öäü HOẶC Pháp như áê hoặc Trung Quốc như ...

Làm thế nào tôi có thể cấu hình biểu hiện thường xuyên của tôi vì vậy nó chấp nhận tất cả ký tự chữ cái từ bảng chữ cái quốc tế?

+1

Bạn sử dụng ngôn ngữ hoặc biểu thức chính quy nào? – Gumbo

+1

"bảng chữ cái" của Trung Quốc không phải là '...'! – kennytm

Trả lời

1

Với PCRE nó sẽ là \w, một ký tự "từ". Nó cũng chấp nhận Unicode khi được cấu hình đúng cách.

+1

'\ w' không phải là ranh giới mà là lớp ký tự của các ký tự từ. – Gumbo

+0

... và '\ b' là ranh giới từ. – kennytm

+0

Thật vậy, tôi đã sửa đổi câu trả lời ban đầu của mình. Lời giải thích của tôi không chính xác. – Wolph

1

Nó thay đổi. Một số ngôn ngữ có cờ "Unicode" mở rộng \d, \w, v.v. Một số lớp tương đương hỗ trợ trong một phạm vi, ví dụ: [[=e=]] khớp với e, é, ê, v.v. Tài liệu regex cho ngôn ngữ hoặc thư viện của bạn sẽ giải thích các tùy chọn có sẵn.

13

Vì bạn đặc biệt yêu cầu Unicode, \p{L} là phím tắt cho một chữ cái Unicode. Tuy nhiên, không phải tất cả các hương vị regex đều hỗ trợ cú pháp này. .NET, Perl, Java và công cụ regex JGSoft sẽ, ví dụ, Python sẽ không.

Vì vậy, ví dụ: \b\p{L}+\b sẽ khớp với toàn bộ một từ của các ký tự Unicode.

+1

Điều này sẽ là _great_ nếu nó làm việc trong regex thay thế của javascript, nhưng nó dường như không làm việc cho tôi (trong chrome, ít nhất). Bất kỳ ý tưởng? – aaaidan

+1

@aaaidan: Khó khăn vì công cụ regex tích hợp của JavaScript rất hạn chế và không cung cấp sự trừu tượng như '\ p {L}'. Bạn luôn có thể tạo lớp nhân vật của riêng bạn từ tất cả các codepoints chữ Unicode (kinh dị!) Hoặc sử dụng thư viện XRegExp của Steve Levithan với plugin Unicode: http://blog.stevenlevithan.com/archives/xregexp-unicode-plugin –

+0

Tuyệt vời. Chúc mừng! – aaaidan

0

Trong nhiều ngôn ngữ, bạn chỉ cần nhập các ký hiệu unicode vào lớp ký tự: [a-zäöüß] v.v.

+2

Điều đó sẽ không giúp ích nhiều, khi anh ấy muốn kết hợp ** tất cả các chữ cái **. –

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