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


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 # , PCREGo 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.