Biểu thức chính quy để khớp với các ký tự không phải ASCII?


237

Cách dễ nhất để khớp các ký tự không phải ASCII trong biểu thức chính quy là gì? Tôi muốn khớp tất cả các từ riêng lẻ trong một chuỗi đầu vào, nhưng ngôn ngữ có thể không phải là tiếng Anh, vì vậy tôi sẽ cần phải khớp các từ như ü, ö, ß và ñ. Ngoài ra, đây là trong Javascript / jQuery, vì vậy mọi giải pháp sẽ cần phải áp dụng cho điều đó.


1
Bạn có muốn khớp tất cả các chữ cái hoặc tất cả các ký tự? Chẳng hạn, bạn có muốn bao gồm dấu câu, chữ số, khoảng trắng và các dấu hiệu và ký hiệu tùy ý không? Nói rằng bạn muốn khớp all wordslàm cho âm thanh giống như bạn chỉ muốn các chữ cái không phải tiếng Anh và không phải tất cả các ký tự không phải tiếng Anh như tiêu đề câu hỏi của bạn.
hà mã

Câu trả lời:


253

Điều này nên làm điều đó:

[^\x00-\x7F]+

Nó phù hợp với bất kỳ ký tự nào không có trong bộ ký tự ASCII (0-127, tức là 0x0 đến 0x7F).

Bạn có thể làm điều tương tự với Unicode:

[^\u0000-\u007F]+

Đối với unicode, bạn có thể xem 2 tài nguyên này:


28
Điều này không trả lời câu hỏi này về việc ghép các từ với các ký tự không phải tiếng Anh ...
sth

34
Không có thứ gì như một nhân vật có mã ASCII lớn hơn 128 !!!
tchrist

29
Tôi cuối cùng đã xác định [\u00BF-\u1FFF\u2C00-\uD7FF\w]là một lá thư.
Markus von Broady

24
@jackocnr Trước tiên, một sửa chữa nhỏ: [\u00C0-\u1FFF\u2C00-\uD7FF\w](không có dấu hỏi ngược ¿), như đối với phạm vi, hãy tham khảo BMP . 00C0Àtrong Latin-1 Bổ sung , 1FFFlà ký tự cuối cùng của Hy Lạp mở rộng, 2C00là chữ cái đầu tiên trong Glagolitic, và D7FFlà nhân vật cuối cùng trong Hangul Jamo mở rộng-B. Vì vậy, đó là tất cả mọi thứ ngoại trừ: biểu tượng và ký tự đặc biệt trên 2 khối đầu tiên; ký hiệu ở khối giữa; người thay thế, vùng kín và ký tự đặc biệt trong khối kết thúc.
Markus von Broady

7
Câu trả lời này không chính xác. ASCII không bao gồm U + 0080 PADDING CHARACTER * . Nếu đúng như vậy, thì ASCII sẽ bao gồm 129 ký tự thay vì 128.
Mathias Bynens

159
var words_in_text = function (text) {
    var regex = /([\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]+)/g;
    return text.match(regex);
};

words_in_text('Düsseldorf, Köln, Москва, 北京市, إسرائيل !@#$');

// returns array ["Düsseldorf", "Köln", "Москва", "北京市", "إسرائيل"]

Regex này sẽ khớp với tất cả các từ trong văn bản của bất kỳ ngôn ngữ nào ...


61
Phù thủy này bạn đã chia sẻ với chúng tôi ...: v
Luke Madhanga 20/03/2015

9
Tại sao bạn chắc chắn rằng nó phù hợp với tất cả các từ trong văn bản? Nguồn nào?
dititru

7
@rjanjic, bạn có thể đặt bất kỳ nguồn nào cho việc này không? Tôi rất thích xem làm thế nào regex này kết hợp với nhau.
nghe nhìn

3
@dumitru Đây là một số nguồn để chek đến: fileformat.info/info/unicode/block/index.htm
ESL

7
Khớp tất cả các ký tự trong tất cả các ngôn ngữ[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]
STEEL

80

Tình hình với regexes, Unicode và Javascript rất tệ. Thật nực cười khi các lập trình viên phải dựa vào các thư viện bên ngoài để nhận ra rằng "Αλφα" là một từ, hoặc thậm chí "é" là một chữ cái.

Nhưng nó đi.

Anh chàng này đã viết một thư viện tốt để xử lý Unicode trong các chế độ Javascript:

http://blog.stevenlevithan.com/archives/javascript-regex-and-unicode

Các công cụ Unicode là một plugin cho thư viện regex này:

http://xregapi.com/

Đây là một bài viết về phần mở rộng Unicode:

http://blog.stevenlevithan.com/archives/xregapi-unicode-plugin

Và chính trang mở rộng:

http://xregapi.com/plugins/

Công việc tuyệt vời nhưng tôi vẫn nhận ra rằng Javascript rất lạc hậu về vấn đề này.

(Anh ấy đã viết một cuốn sách cho O'Reilly về chủ đề này nên hoàn toàn có thể anh ấy biết anh ấy đang nói về điều gì.)

Cách anh ta thực hiện nó là bằng cách thêm các bảng ký tự với các thuộc tính nhất định. Sau đó, khi bạn xây dựng một regex với thư viện của anh ta, \p{charclass}được thay thế bằng [allthecharactersintheclass].


1
Twitter cũng có một thư viện phân tích văn bản đẹp bao gồm nhiều ngôn ngữ, mặc dù (rõ ràng) rất hashtag-centric: github.com/twitter/twitter-text-js
Michael Marsh

52

Unicode Thuộc tính Thoát là một trong những tính năng của ES2018.

Cách sử dụng cơ bản

Với Thoát khỏi thuộc tính Unicode, bạn có thể ghép một chữ cái từ bất kỳ ngôn ngữ nào với biểu thức chính quy đơn giản sau:

/\p{Letter}/u

Hoặc với tốc ký, thậm chí là khó hơn:

/\p{L}/u

Từ phù hợp

Về trường hợp sử dụng cụ thể của câu hỏi (các từ khớp), lưu ý rằng bạn có thể sử dụng Unicode Thuộc tính thoát trong các lớp ký tự, giúp dễ dàng ghép các chữ cái với các ký tự từ khác như dấu gạch nối:

/[\p{L}-]/u

Kết hợp tất cả lại với nhau, bạn có thể ghép các từ của tất cả [1] ngôn ngữ với RegEx ngắn tuyệt đẹp này:

/([\p{L}-]+)/ug

Ví dụ (không biết xấu hổ cắm từ câu trả lời ở trên ):

'Düsseldorf, Köln, Москва, 北京市, إسرائيل !@#$'.match(/([\p{L}-]+)/ug)

// ["Düsseldorf", "Köln", "Москва", "北京市", "إسرائيل"]

[1] Lưu ý rằng tôi không phải là chuyên gia về ngôn ngữ. Bạn vẫn có thể muốn thực hiện nghiên cứu của riêng mình về các ký tự khác có thể là một phần của các từ bên cạnh các chữ cái và dấu gạch nối.

Hỗ trợ trình duyệt

Kể từ bây giờ (tháng 12 năm 2018), tôi chỉ có thể kiểm tra regex này thành công trong Chrome (và các trình duyệt dựa trên Blink khác, như Opera, Vivaldi hoặc các phiên bản tương lai của Microsoft Edge) và Safari (kể từ phiên bản 12, Thử nghiệm trước đó với phiên bản 11 thất bại). Tuy nhiên, vì đặc điểm kỹ thuật đã kết thúc và tính năng được chuẩn hóa, mong muốn các trình duyệt hiện đại khác sẽ sớm xuất hiện.

Tôi đã tạo một trang web nhỏ để bạn kiểm tra xem trình duyệt của bạn có hỗ trợ Thoát khỏi Thuộc tính Unicode không.

Dịch chuyển

Các thuộc tính Unicode có thể được dịch mã xuống ES5 bằng một công cụ có tên là regrecu . Có một bản demo trực tuyến có sẵn ở đây . Như bạn có thể thấy trong bản demo, trên thực tế, bạn có thể khớp các chữ cái không phải là chữ Latinh ngày nay với biểu thức chính quy ES5 (dài khủng khiếp) sau đây:

/(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D])/

Nếu bạn đang sử dụng Babel, thì cũng có một plugin hỗ trợ regrecu cho điều đó ( plugin Babel v6 , plugin Babel v7 ).


Đây là giải pháp thực tế trong trường hợp của tôi. Cụ thể: [\ p {L} \ s \ d] để chấp nhận bất kỳ tên nào trong bất kỳ ngôn ngữ nào có khoảng trắng và số. Liên kết tham chiếu
tuxErrante

Tên vẫn có thể bao gồm dấu gạch nối (ví dụ khá phổ biến ở Đức). Thành thật mà nói, có lẽ tốt nhất là không đưa ra bất kỳ giả định nào về những ký tự mà một tên hợp lệ bao gồm.
Loilo

1
Câu trả lời hàng đầu cho JS. Vẫn chưa được hỗ trợ trong Edge / Firefox ngày hôm nay, vì vậy, Stpiling vẫn có liên quan.
Barry Staes

1
Đây là yêu cầu tính năng firefox: bugzilla.mozilla.org/show_orms.cgi?id=1361876
bodo

1
@MatzHeri uCờ đã được giới thiệu trong ES2015 và cho phép các tính năng khác nhau liên quan đến Unicode (ví dụ: các thuộc tính thoát được đề cập trong câu trả lời của tôi, mặc dù những thứ đó chỉ được giới thiệu vài năm sau đó). Do các tính năng liên quan đến Unicode thay đổi một chút ngữ nghĩa của một số mẫu biểu thức chính quy, nên điều này phải được kích hoạt rõ ràng - bằng cách thêm ucờ đó .
Loilo

13

Câu trả lời được đưa ra bởi Jeremy Ruten là tuyệt vời, nhưng tôi nghĩ đó không chính xác là những gì Paul Wicks đang tìm kiếm. Nếu tôi hiểu chính xác, Paul đã hỏi về cách diễn đạt để khớp với những từ không phải tiếng Anh như könnenhay móc. Regex của Jeremy chỉ khớp với các chữ cái không phải tiếng Anh, vì vậy cần có sự cải thiện nhỏ:

([^\x00-\x7F]|\w)+

hoặc là

([^\u0000-\u007F]|\w)+

Phần này [^\x00-\x7F][^\u0000-\u007F]phần này cho phép biểu thức regullar khớp với các chữ cái không phải tiếng Anh.

Đây (|)là logic hoặc và \wlà thư tiếng Anh, vì vậy ([^\u0000-\u007F]|\w)sẽ phù hợp với thư tiếng Anh đơn hoặc không tiếng Anh.

+ ở cuối biểu thức có nghĩa là nó có thể được lặp lại, vì vậy toàn bộ biểu thức cho phép tất cả các chữ cái tiếng Anh hoặc tiếng Anh không khớp.

Ở đây bạn có thể kiểm tra biểu thức đầu tiên với các chuỗi khác nhau và đây là biểu thức thứ hai.


6

Bạn thực hiện tương tự như bất kỳ ký tự khớp nào khác, nhưng bạn sử dụng \ uXXXX trong đó XXXX là số unicode của ký tự.

Nhìn vào: http://unicode.org/charts/charindex.html

http://unicode.org/charts/

http://www.decodeunicode.org/


ngoại trừ thực tế là tìm kiếm từng thứ có thể được gọi là một ký tự trong khi không thêm bất kỳ ký hiệu đặc biệt nào, chẳng hạn như dấu cách, dấu chấm câu, v.v ... là một nhiệm vụ khá khó khăn.
My1

3

Tất cả các hương vị Regex hỗ trợ Unicode phải có một lớp ký tự đặc biệt như \ w khớp với bất kỳ chữ Unicode nào. Hãy xem hương vị cụ thể của bạn ở đây .


7
Điều này đúng với hầu hết các hương vị của regex, nhưng không phải với JavaScript, ít nhất là theo thường xuyên- expresspress.info / javascript.html
Paul Wicks

Xui xẻo rồi, tôi đoán thế. Ít nhất bạn có thể sử dụng sau đó sử dụng các biểu đồ Unicode được đăng bởi olle để tìm các ký tự của bạn;)
OregonGhost

Tôi nghĩ \ w là người phụ thuộc vào cài đặt văn hóa trên máy khách.
troelskn

Tôi không biết, nhưng trong .NET, bạn luôn có thể chỉ định văn hóa bạn muốn. Ngoài ra, chữ cái là gì và không được định nghĩa trong tiêu chuẩn Unicode và không phụ thuộc vào văn hóa.
OregonGhost

0

Tôi gặp vấn đề với \ p hoạt động như mong đợi, vì vậy tôi chỉ sử dụng một chiến lược khác như:

([^\t]+)\t

Tìm bất cứ thứ gì không phải là ký tự tab cho đến ký tự tab tiếp theo ... rõ ràng điều này phụ thuộc vào nguồn tìm kiếm của bạn, nhưng bạn có ý tưởng. Bây giờ tôi không phải tìm ra những nhân vật unicode nào hoạt động và không hoạt động, v.v.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.