정규식 : 문자 나 숫자가 아닌 모든 문자


113

문자 나 숫자가 아닌 모든 문자와 일치하는 정규식을 찾으려고합니다. 따라서 (,, @, £, () 등과 같은 문자는 ...

일단 발견되면 공백으로 바꾸고 싶습니다.

어떤 충고.

답변:


165

문자 또는 숫자 이외의 항목을 일치 시키려면 다음을 시도해보십시오.

[^a-zA-Z0-9]

그리고 교체 :

var str = 'dfj,dsf7lfsd .sdklfj';
str = str.replace(/[^A-Za-z0-9]/g, ' ');

17
\w는 Word 문자 용이며 정확히 동일합니다 [a-zA-Z0-9_](밑줄은 단어 문자로 간주 됨에 유의하십시오.) ... 그래서 속기는str.replace(/[^\w]/g, ' ')
Joel Mellon

하지만 많은 유니 코드 문자도 포함됩니다! 유니 코드 문자를 제외하는 방법이 있습니까?
Clite Tailor

1
유니 코드 문자를 포함하려면 [^ \ p {L} 0-9]를 사용할 수 있습니다.
Dave

@ 데이브 : 2018으로 당신이 polyfill없이, 분명히 ... 수 없습니다 stackoverflow.com/questions/280712/javascript-unicode-regexes
Nickolay

공백으로 바꾸는 대신 ... "\"다음에 식별 된 문자로 바꾸는 방법이 있습니까? 이처럼 :이 dfj, dsf7lfsd .sdklfj를이 dfj \, dsf7lfsd \ .sdklfj로 만드시겠습니까?
CrazySpy

39

이 정규식은 문자, 숫자 또는 밑줄 ( _) 문자 가 아닌 모든 항목과 일치 합니다.

\W

예를 들어 JavaScript에서 :

"(,,@,£,() asdf 345345".replace(/\W/g, ' '); // Output: "          asdf 345345"

나는 그가 찾고있는 생각 / (_ | \ W) / g이 아닌 숫자 나 문자 (영어) 아무것도 일치
케네 벡

@sbmaxx &, (,)이 문자를 제외한 모든 문자를 바꾸고 싶습니다. 이 조건을 현재 정규식에 어떻게 추가 할 수 있습니까?
K Pal

17

당신이 찾고있는:

var yourVar = '1324567890abc§$)%';
yourVar = yourVar.replace(/[^a-zA-Z0-9]/g, ' ');

이것은 영숫자가 아닌 모든 문자를 공백으로 바꿉니다.

끝에있는 "g"는 모든 항목을 대체합니다.

az (소문자) 및 AZ (대문자)를 지정하는 대신 대소 문자를 구분하는 옵션을 사용할 수도 있습니다 /[^a-z0-9]/gi..


공백과도 일치합니까? 보관할 공간이 필요합니다. 감사.
James Jeffery

공백 문자는 일치하지만 공백 문자로 대체되므로 실제로는 그대로 둡니다 (공백은 공백으로 유지됩니다).
jimbo 2010 년


5

str.replace (/ [^ \ w] /); 문자열에서 알파벳이 아닌 모든 숫자와 숫자를 대체합니다!

편집 1 : str.replace(/[^\w]/g, ' ')


2
작동하는 대답은입니다 str.replace(/[^\w]/g, ' '). /g플래그를 포함하지 않으면 첫 번째 항목 만 대체됩니다. 그리고 대체 문자열을 정의하지 않으면 여기에 공백이 있으면 모든 곳에서 ' '대체됩니다 undefined. 마지막으로 밑줄은 일치하기 때문에 대체되지 않습니다 \w. 이 답변은 완벽하지 않습니다.
Julien Lirochon

4
  • 문자 만 일치 /[A-Z]/ig
  • 문자가 아닌 모든 항목과 일치 /[^A-Z]/ig
  • 번호 만 일치 /[0-9]/g또는/\d+/g
  • 숫자 /[^0-9]/g또는/\D+/g
  • 숫자 나 문자가 아닌 모든 항목과 일치 /[^A-Z0-9]/ig

다른 가능한 패턴이 있습니다


3

다른 사람들이 볼 수 있도록 :

someString.replaceAll("([^\\p{L}\\p{N}])", " ");

문자 및 숫자가 아닌 유니 코드 문자를 제거합니다.

출처


나는 두 upvotes가 어디에서 왔는지 모르겠어요,하지만 자바 스크립트 (이 질문에 대한 인)가 더 있어요 replaceAll, 그리고 \p{..}속성 탈출 널리 구현되지 않습니다.
Nickolay

2

시도해 str = str.replace(/\W|_/g,'');보면 문자없이 문자열이 반환되며 파이프 막대 뒤에 특수 문자가 있는지도 지정할 수 |있습니다.

var str = "1324567890abc§$)% John Doe #$@'.replace(/\W|_/g, ''); 그것은 돌아올 것이다 str = 1324567890abcJohnDoe

또는 숫자와 문자를 찾아 빈 문자열 ( "")로 바꿉니다.

var str = "1324567890abc§$)% John Doe #$@".replace(/\w|_/g, ''); 그것은 돌아올 것이다 str = '§$)% #$@';


1

문자, 숫자 또는 문자 이외의 것을 분음 부호와 일치 시키려면 é다음을 시도해보십시오.

[^\wÀ-úÀ-ÿ]

그리고 교체 :

var str = 'dfj,dsf7é@lfsd .sdklfàj1';
str = str.replace(/[^\wÀ-úÀ-ÿ]/g, '_');

분음 부호를 지원하는 상위 게시물에서 영감을 얻음

출처

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