정규식, 공백이나 콜론을 제외한 모든 영숫자가 아닌 문자


131

이 작업을 어디서나 수행 할 수 있습니까?

기본적으로 앰퍼샌드, 세미콜론, 달러 기호 등과 같은 모든 종류의 기타 문자를 일치 시키려고합니다.


13
/[^a-zA-Z0-9\s\:]*/
— 켈리

답변:


246
[^a-zA-Z\d\s:]
  • \ d-숫자 클래스
  • \ s-공백
  • a-zA-Z-모든 문자와 일치
  • ^-모두 무효화-숫자가 아닌 문자, 공백이 아닌 콜론

나는 :))도보고 있었는지의은 - 나는 당신의 완벽한 해답 촉진해야
— 튜더 콘스탄틴

7
내가 찾은 유일한 것은 이것이 é 또는 ã와 같은 특수 문자를 제거한다는 것입니다. [^ \ w \ d \ s :]를 선호합니다.
— Eric Belair

5
라틴 이외의 문자 나 "특별한"라틴 문자를 잡을 수 없기 때문에 하향 조정됩니다.
— damian

\d와 \s펄 일반적으로 같은 오래된 도구에서 지원하지 않는 확장이다 grep, sed, tr, lex등
— tripleee는

38

이것은해야합니다 :

[^a-zA-Z\d\s:]

1
나머지는 공백을 검사하지만 공백은 검사하지 않거나 실제로 부정하기 위해 잘못된 자리에서 부정을합니다.
— Zachary Scott

\ w는 또한 영숫자가 아닌 문자 인 밑줄도 잡습니다
— Tudor Constantin

아하! 나는 수정할 것이다-나는 그것을 몰랐다. 엔진마다 다르게 작동하지만 OP에 안전한 대답을 줄 수도 있습니다.
— Luke Sneeringer

2
라틴 이외의 문자 나 "특별한"라틴 문자를 잡을 수 없기 때문에 하향 조정됩니다.
— damian

16

악센트가있는 라틴 문자 (예 : à)를 일반 문자로 취급하려면 (예 : 일치하지 않도록 ) 정규식에 적절한 유니 코드 범위 ( \ 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문자, 숫자 및 밑줄 일치하는.


이 범위에는 영숫자가 아닌 일부 문자 (U + 00D7 및 U + 00F7)가 포함되어 있으며 폴란드어, 체코 어, 베트남어 등 서양 이외의 언어에서 유효한 악센트 부호 문자를 많이 제외합니다.
— tripleee

1
RegEx의 각 부분에 대한 설명으로 상향 조정되었습니다.
— morajabi

14

이 시도:

[^a-zA-Z0-9 :]

자바 스크립트 예 :

"!@#$%* ABC def:123".replace(/[^a-zA-Z0-9 :]/g, ".")

온라인 예를 참조하십시오.

http://jsfiddle.net/vhMy8/


3
라틴 이외의 문자 나 "특별한"라틴 문자를 잡을 수 없기 때문에 하향 조정됩니다.
— damian

14
답을 내리는 것은 쉽지만, 보드에 건설적인 정보를 제공하는 것이 더 어렵습니다. 여기까지의 카운트에서 당신은 같은 이유로 3 가지 답변을 다운했고, 약간의 조정을 위해 내 의견으로는 투표했습니다. 예를 들어, 나는이 답변에서 논의 된 것에 대한 정규식을 찾으려고 여기 있습니다. 응용 프로그램에서 사용되지 않는 문자 세트는 신경 쓰지 않습니다. 수익 감소 법.

아론은 미국 시민에 대한 "미세 조정"일지 모르지만이 지구의 나머지 부분과 관련이 있습니다.
— Michael K. Borregaard


4

"영숫자가 아닌 문자"를 의미하는 경우 다음을 사용하십시오.

var reg =/[^a-zA-Z0-9]/g      //[^abc]

1

이 정규식은 C # , PCRE 및 Go to name에 작동합니다.

RegexBuddy가 말한 Chrome의 JavaScript에서는 작동하지 않습니다 . 그러나 이미 여기에 대한 예가 있습니다.

이 주요 부분은 다음과 같습니다.

\p{L}

어떤 언어의 문자 \p{L}나 \p{Letter}문자 를 나타냅니다 .`


정규 표현식 자체 : [^\w\d\s:\p{L}]

예 : https://regex101.com/r/K59PrA/2


이것은 유니 코드 악센트 알파벳을 올바르게 처리하는 유일한 대답입니다. 안타깝게도 모든 정규식 엔진 이이 기능을 지원하는 것은 아닙니다 (정규식 엔진이 표면적으로 PCRE 기반 임에도 불구하고 Python은 3.8에서 부족합니다).
— tripleee

1
나는 대답에서 파이썬을 제거 할 것이고, 나는 그것을 테스트했지만 분명히 그렇지 않다고 생각했다. 지적 해 주셔서 감사합니다.
— Ste

0

이것을 추가하십시오 :

^[^a-zA-Z\d\s:]*$

이것은 나를 위해 일했다 ... :)


2011 년부터 받아 들여진 대답을 반복하는 것처럼 보입니다. ^및 $앵커는 전체 행과 일치하도록 제한하고 *수량화는 빈 행과도 일치 함을 의미합니다.
— tripleee

0

자바 스크립트에서 :

/[^\w_]/g

^부정, 즉 다음 세트에 없는 것을 선택하십시오

\w 모든 단어 문자 (예 : 영숫자 문자 및 밑줄)

_ '단어'문자로 간주되므로 밑줄을 무시하십시오.

사용 예- const nonAlphaNumericChars = /[^\w_]/g;

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