답변:
[^a-zA-Z\d\s:]
\d
와 \s
펄 일반적으로 같은 오래된 도구에서 지원하지 않는 확장이다 grep
, sed
, tr
, lex
등
이것은해야합니다 :
[^a-zA-Z\d\s:]
악센트가있는 라틴 문자 (예 : à)를 일반 문자로 취급하려면 (예 : 일치하지 않도록 ) 정규식에 적절한 유니 코드 범위 ( \ u00C0- \ u00FF ) 도 포함시켜야 합니다. 다음과 같이 보일 것입니다 :
/[^a-zA-Z\d\s:\u00C0-\u00FF]/g
^
다음에 나오는 것을 부정하다a-zA-Z
대소 문자와 일치\d
숫자와 일치\s
공백과 일치합니다. 공백 만 일치 시키려면 공백으로 바꾸십시오.:
콜론과 일치\u00C0-\u00FF
강조된 라틴 문자의 유니 코드 범위와 일치합니다.nb. 유니 코드 범위 일치는 모든 정규식 엔진에서 작동하지 않을 수도 있지만 위의 코드 펜 에서 볼 수 있듯이 위의 Javascript에서는 확실히 작동합니다 .
nb2. 당신이 일치하는 밑줄에 대해 방해하지 않는 경우, 당신은 대체 할 수 a-zA-Z\d
와 \w
문자, 숫자 및 밑줄 일치하는.
이 시도:
[^a-zA-Z0-9 :]
자바 스크립트 예 :
"!@#$%* ABC def:123".replace(/[^a-zA-Z0-9 :]/g, ".")
온라인 예를 참조하십시오.
이 정규식은 C # , PCRE 및 Go to name에 작동합니다.
RegexBuddy가 말한 Chrome의 JavaScript에서는 작동하지 않습니다 . 그러나 이미 여기에 대한 예가 있습니다.
이 주요 부분은 다음과 같습니다.
\p{L}
어떤 언어의 문자 \p{L}
나 \p{Letter}
문자 를 나타냅니다 .`
정규 표현식 자체 : [^\w\d\s:\p{L}]
/[^a-zA-Z0-9\s\:]*/