프론트엔드 첫걸음

모든 문자 포함하는 정규식(한글, 일본어, 중국어 모두 포함) 본문

개발 공부/Javascript

모든 문자 포함하는 정규식(한글, 일본어, 중국어 모두 포함)

차정 2024. 2. 8. 14:18

모든 나라의 문자를 포함하는 정규식은 유니코드 문자클래스 L 을 통해 만들수있다.

const wordRegex = /^[\p{L}]+$/u; 

function testRegex(regex, word) {
  if(regex.test(word)) {
   return `${regex} test ${word}   => pass`
  } 
  return `${regex} test ${word}   => fail`  
}


console.log(testRegex(wordRegex, 'project')) // pas
console.log(testRegex(wordRegex, '不客气')) // pass
console.log(testRegex(wordRegex, 'ただいま。')) //fail (。 이것이 문자가 아니므로 fail)
console.log(testRegex(wordRegex, '!')) // fail (느낌표는 문자가 아니므로 fail)

See the Pen regex {L} by JEONG (@cona) on CodePen.

 

위 예제에서 일본어에서 사용되는 고리점(kuten)은 별도로 추가해야한다.

이를 위해 정규식에 문장부호 P 와 공백 Z를 포함하도록 수정하면 아래와 같다.

const wordRegex = /^[\p{L}\p{P}\p{Z}]+$/u; 

function testRegex(regex, word) {
  if(regex.test(word)) {
   return `${regex} test ${word}   => pass`
  }    
   return `${regex} test ${word}   => fail`
}


console.log(testRegex(wordRegex, '私の家には「ポチ」という名前の犬がいます。')) //pass
console.log(testRegex(wordRegex, '我很累,我需要休息,我想要去旅游。'))//pass
console.log(testRegex(wordRegex, 'He said "Hello, world!"'))//pass

 

See the Pen regex {L} by JEONG (@cona) on CodePen.

 

 

 

 

 

 

다른 유니코드 정규식을 사용하려면 다음을 참고하자.

https://ko.javascript.info/regexp-unicode

 

유니코드: 'u' 플래그와 \p{...} 클래스

 

ko.javascript.info

다음은 주요 문자 범주와 각각의 하위 범주 목록입니다.

  • 문자(Letter) L:
    • 소문자(lowercase) Ll
    • 조정(modifier) Lm
    • 단어의 첫 글자를 대문자로(titlecase) Lt
    • 대문자(uppercase) Lu
    • 기타(other) Lo
  • 숫자(Number) N:
    • 10진수(decimal digit) Nd
    • 문자(letter number) Nl
    • 기타(other) No
  • 문장 부호(Punctuation) P:
    • 연결선(connector) Pc
    • 대시(dash) Pd
    • 처음 따옴표(initial quote) Pi
    • 마지막 따옴표(final quote) Pf
    • 열기(open) Ps
    • 닫기(close) Pe
    • 기타(other) Po
  • 표시(Mark) M (강세 등):
    • 간격 결합(spacing combining) Mc
    • 묶음(enclosing) Me
    • 비공백(non-spacing) Mn
  • 기호(Symbol) S:
    • 통화(currency) Sc
    • 수정(modifier) Sk
    • 수학(math) Sm
    • 기타(other) So
  • 구분 기호(Separator) Z:
    • 줄(line) Zl
    • 단락(paragraph) Zp
    • 공백(space) Zs
  • 기타(Other) C:
    • 제어(control) Cc
    • 형식(format) Cf
    • 할당되지 않음(not assigned) Cn
    • 사용자 지정(private use) Co
    • 서로게이트(surrogate) Cs

예를 들어 소문자를 찾아야 한다면 \p{Ll}을, 문장 부호를 찾아야 한다면 \p{P}를 사용하는 식으로 검색할 수 있습니다.