비 ASCII 문자와 일치하는 정규식?


237

정규식에서 ASCII가 아닌 문자를 일치시키는 가장 쉬운 방법은 무엇입니까? 입력 문자열에서 모든 단어를 개별적으로 일치시키고 싶지만 언어가 영어가 아닐 수 있으므로 ü, ö, ß 및 ñ와 일치해야합니다. 또한 이것은 Javascript / jQuery에 있으므로 모든 솔루션에 적용해야합니다.


1
모든 문자 또는 모든 문자를 일치 시키겠습니까? 예를 들어 문장 부호, 숫자, 공백 및 임의의 부호와 기호를 포함 하시겠습니까? 일치하고 싶다고 말하면 all words영어 이외의 문자 만 원하는 것이 아니라 영어 이외의 모든 문자를 질문 제목 상태로 원하는 것처럼 들립니다.
hippietrail

답변:


253

이것은해야합니다 :

[^\x00-\x7F]+

ASCII 문자 세트에 포함되지 않은 모든 문자 (0-127, 즉 0x0 ~ 0x7F) 와 일치합니다 .

유니 코드를 사용하여 동일한 작업을 수행 할 수 있습니다.

[^\u0000-\u007F]+

유니 코드의 경우이 두 가지 리소스를 볼 수 있습니다.

  • 유니 코드 범위의 코드 차트 목록
  • 이 도구 는 유니 코드 블록으로 필터링 된 정규식을 작성합니다.

28
영어 이외의 문자로 단어를 일치시키는 것에 대해서는이 질문에 대답하지 않습니다 ...
sth

34
없다 같은 것은 "누구의 ASCII 코드 문자가 128보다 크면"로가!
tchrist

29
나는 [\u00BF-\u1FFF\u2C00-\uD7FF\w]편지로 정의 했다.
Markus von Broady

24
@jackocnr 먼저 작은 수정 : [\u00C0-\u1FFF\u2C00-\uD7FF\w](역 물음표없이 ¿) 범위는 BMP를 참조하십시오 . 00C0À라틴어 -1 추가 , 1FFF확장 그리스어의 마지막 문자이며, 2C00글라 골의 첫 글자를, 그리고 D7FF한글 자모 확장-B의 마지막 문자입니다. 따라서 두 가지 첫 번째 블록의 기호 및 특수 문자; 중간 블록의 기호; 엔드 블록의 대리, 개인 영역 및 특수 문자.
Markus von Broady

7
이 답변은 잘못되었습니다. ASCII는 U + 0080 PADDING CHARACTER *를 포함하지 않습니다 . 그렇다면 ASCII는 128이 아닌 129 자로 구성됩니다.
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", "Москва", "北京市", "إسرائيل"]

이 정규 표현식은 모든 언어의 텍스트에서 모든 단어와 일치합니다 ...


61
이 마법은 당신이 우리와 함께 공유 한 ... : v
Luke Madhanga

9
텍스트의 모든 단어와 일치하는 이유가 무엇입니까? 어떤 소스?
dumitru

7
@ rjanjic, 당신은 이것에 대한 소스를 사이트 할 수 있습니까? 이 정규식이 어떻게 결합되었는지보고 싶습니다.
시청각

3
@dumitru 다음은 참고할만한 소스입니다. fileformat.info/info/unicode/block/index.htm
ESL

7
모든 언어의 모든 문자와 일치[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]
STEEL

80

정규 표현식, 유니 코드 및 Javascript가있는 상황은 짜증납니다. 프로그래머가 "Αλφα"가 단어이거나 심지어 "é"가 문자임을 인식하기 위해 외부 라이브러리에 의존해야한다는 것은 우스운 일입니다.

그러나 그렇습니다.

이 사람은 Javascript Regexes에서 유니 코드를 처리하기위한 좋은 라이브러리를 작성했습니다.

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

유니 코드 항목은이 정규식 라이브러리에 대한 플러그인입니다.

http://xregexp.com/

유니 코드 확장에 대한 게시물은 다음과 같습니다.

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

그리고 확장 페이지 자체 :

http://xregexp.com/plugins/

대단한 일이지만 Javascript가 이와 관련하여 너무 뒤떨어져 있다는 것은 여전히 ​​저를 울립니다.

(그는 주제에 관해 O'Reilly를 위해 책을 썼으므로 그가 말하는 것을 아는 것이 가능할 것입니다.)

그가 구현 한 방식은 특정 속성을 가진 문자표를 추가하는 것입니다. 그런 다음 라이브러리로 정규 표현식을 구성 \p{charclass}하면로 대체됩니다 [allthecharactersintheclass].


1
트위터에는 또한 많은 언어를 다루는 멋진 텍스트 파싱 라이브러리가 있습니다 ( github.com/twitter/twitter-text-js
Michael Marsh

53

유니 코드 속성 이스케이프 는 ES2018의 기능 중 하나입니다.

기본 사용법

유니 코드 속성 이스케이프를 사용하면 모든 언어의 문자를 다음과 같은 간단한 정규식과 일치시킬 수 있습니다.

/\p{Letter}/u

또는 속기, 심지어 더 간결한 :

/\p{L}/u

일치하는 단어

질문의 구체적인 사용 사례 (일치하는 단어), 당신은 문자 클래스에서 유니 코드 속성 탈출을 사용하여 쉽게 문자와 일치 할 수있게 할 수 있습니다에 대해서 함께 하이픈 같은 다른 워드 문자를 :

/[\p{L}-]/u

이 모든 것을 하나로 묶으면 모든 [1] 언어의 단어 를이 짧은 짧은 RegEx와 일치시킬 수 있습니다.

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

예 ( 위의 답변 에서 뻔뻔하게 연결 ) :

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

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

[1] 나는 언어 전문가가 아닙니다. 글자와 하이픈 이외 의 단어의 일부일 수있는 다른 문자에 대한 자체 연구를 계속하고 싶을 수도 있습니다.

브라우저 지원

현재 (2018 년 12 월) Chrome (및 Opera, Vivaldi 또는 이후 버전의 Microsoft Edge와 같은 다른 Blink 기반 브라우저) 및 Safari (버전 12, 버전 11 이전 테스트)에서만이 정규식을 성공적으로 테스트 할 수있었습니다. 실패한). 그러나 사양이 완성되고 기능이 표준화되었으므로 다른 최신 브라우저도 곧 출시 될 것으로 예상됩니다.

브라우저가 유니 코드 속성 이스케이프를 지원하는지 확인하기 위해 작은 웹 사이트 를 만들었습니다 .

트랜스 필링

유니 코드 속성 탈출이라는 도구로 ES5까지 transpiled 할 수 regexpu . 온라인 데모가 여기 있습니다 . 데모에서 볼 수 있듯이 오늘날 비 라틴 문자를 다음과 같은 ES5 정규식과 일치시킬 수 있습니다.

/(?:[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])/

Babel을 사용하는 경우 정규 표현식으로 구동되는 플러그인도 있습니다 ( Babel v6 plugin , Babel v7 plugin ).


이것이 내 경우의 실제 해결책입니다. 공백과 숫자가 포함 된 모든 언어의 이름을 사용하려면 [\ p {L} \ s \ d]를 사용하십시오. 참조 링크
tuxErrante

이름에는 여전히 하이픈이 포함될 수 있습니다 (예를 들어 독일에서 매우 일반적으로 사용됨). 솔직히 말해서 유효한 이름에 어떤 문자가 포함되어 있는지 전혀 가정하지 않는 것이 가장 좋습니다.
Loilo

1
JS의 최고 답변. 오늘날 Edge / Firefox에서는 여전히 지원되지 않으므로 Transpiling stil이 적합합니다.
Barry Staes

1
이것은 파이어 폭스 기능 요청입니다 : bugzilla.mozilla.org/show_bug.cgi?id=1361876
bodo

1
@MatzHeri이 u플래그는 ES2015 에 도입되었으며 유니 코드와 관련된 다양한 기능을 활성화합니다 (예 : 몇 년 후 소개 된 경우에도 제 답변에 언급 된 속성 이스케이프). 유니 코드 관련 기능은 일부 정규식 패턴의 의미를 약간 변경하므로 해당 u플래그 를 추가하여 명시 적으로 활성화해야합니다 .
Loilo

14

Jeremy Ruten의 답변은 훌륭하지만 Paul Wicks가 정확히 찾은 것이 아니라고 생각합니다. 만약 내가 제대로 이해하고 바울은 같은 비 영어 단어와 일치하는 표현에 대해 질문 können이나 móc. 제레미의 정규 표현식은 영어가 아닌 문자와 만 일치하므로 약간의 개선이 필요합니다.

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

또는

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

이것 [^\x00-\x7F]과 이것[^\u0000-\u007F] 부분 부분은 영어가 아닌 문자와 일치하는 갈매기 표현을 허용합니다.

이것은 (|)논리적이거나 \w영어 문자이므로([^\u0000-\u007F]|\w) 하나의 영어 또는 영어 이외의 문자와 일치합니다.

+ 표현의 끝에는 반복 될 수 있음을 의미하므로 전체 표현은 영어 나 영어 이외의 문자를 모두 일치시킵니다.

여기 에서 다양한 문자열로 첫 번째 표현식을 테스트 할 수 있으며 두 번째는 여기에 있습니다 .



3

모든 유니 코드 가능 Regex 플레이버는 유니 코드 문자와 일치하는 \ w와 같은 특수 문자 클래스를 가져야합니다. 여기 에서 특정 맛을 살펴보십시오 .


7
이것은 대부분의 정규 표현식에 적합하지만 JavaScript에는 적합하지 않지만 적어도 regular-expressions.info/javascript.html
Paul Wicks

그럼 운이 나쁜 것 같아요 최소한 olle이 게시 한 유니 코드 차트를 사용하여 문자를 찾을 수 있습니다.)
OregonGhost

\ w는 클라이언트의 문화적 설정에 달려 있다고 생각합니다.
troelskn

잘 모르겠지만 .NET에서는 언제든지 원하는 문화권을 지정할 수 있습니다. 그 외에도, 문자는 무엇이고 유니 코드 표준에 정의되어 있지 않은 것은 문화에 의존하지 않습니다.
OregonGhost

0

예상대로 \ p 작업에 문제가 있었으므로 다음과 같은 다른 전략을 사용했습니다.

([^\t]+)\t

다음 탭 문자까지 탭 문자가 아닌 것을 찾으십시오. 분명히 이것은 검색 소스에 따라 다르지만 아이디어를 얻습니다. 이제 유니 코드 문자가 작동하고 작동하지 않는 것을 알아낼 필요가 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.