2017-01-17 2 views
-1

구두점이 아닌 문자를 제거하지만 문자열의 챕터를 계속 추적하는 시각화를 만들려고합니다.정규식과 일치하지 않는 모든 항목 제거

지금까지 내가 유지하려면 일치하는 다음 정규식을 만들 달성 : 나는 문자열에서 텍스트의 나머지 부분을 대체 할 수있는 방법

(\CAPÍTULO ([0-9]+))|([\\?.,:;!¡¿。、·*\(\)\[\]\-–\_«»\'\'\/@#$&\%\^=+\|<>\"])

?

+0

입력 및 출력의 예를 들려 줄 수 있습니까? –

+0

보존 할 특수 구두점 문자가 있습니까? 아니면 영숫자가 아닌 문자를 모두 보존 하시겠습니까? 보존 된 구두점 문자의 위치를 ​​유지하거나, 구두점이 아닌 문자를 공백으로 대체하거나, 결과를 스쿼시하고 싶습니까? –

답변

0

당신은 쉽게 replace 기능을 사용할 수 있습니다, 예를 들어이 시도 :

var str = "whatever, string, you like!"; 
 
var newStr = str.replace(/\w/g, ' '); 
 

 
console.log(newStr);

+0

그 요구 사항을 충족시키지 못합니다 – jsdario

+0

@jsdario 귀하의 요구 사항에 맞게 답변을 업데이트했습니다 –

+0

이것은 유지하고자하는 '자본 1'을 제거합니다. –

0

이 시도 :

var r = /(CAPÍTULO [0-9]+|[\\?.,:;!¡¿。、·*\(\)\[\]\-–\_«»\'\'\/@#$&\%\^=+\|<>\"])|(.)/g 
var s = "[email protected]#123^&*XYZ;"; 
var p = s.replace(r, "$1"); 

// Result: "[email protected]#^&*;" 

첫째, 그룹 1에있는 모든 문자와 일치 모든 불 일치가 두 번째 그룹에 속합니다. 그룹 번호 (예 : $ 1)의 결과가 없으면 비어 있기 때문에 첫 번째 그룹과 일치하는 항목을 제외한 모든 항목을 효과적으로 지 웁니다.

당신은 당신이 할 수있는 다른 문자의 배치를 보존해야하는 경우 : 당신은 그냥 마지막에 추가 ""을 처리 할 필요가

var r = /(CAPÍTULO [0-9]+|[\\?.,:;!¡¿。、·*\(\)\[\]\-–\_«»\'\'\/@#$&\%\^=+\|<>\"])|(.)/g 
var s = "[email protected]#123^&*XYZ;"; 
s.replace(r, "$1,").split(","); 

// Result: ["", "", "", "!", "@", "#", "", "", "", "^", "&", "*", "", "", "", ";", ""] 

합니다. ;)이 작업은 아무 것도 대체하지 않고 (즉, "$1"이 일치하지 않는 경우 ""이 됨) 쉼표 (또는 원하는 모든 문자)가 위치를 추적하기 때문에 작동합니다. s.replace(r, "$1~").split("~");과 같은 것을 사용할 수도 있습니다.

+0

이것은 그가 유지하기를 원하는 '자본 1'부분을 제거하는 것처럼 보입니다. –

+0

지금 시도하십시오 - 그는 원래 게시물에'\ C'을 가지고 있었고 그 안에 남겨 두었습니다;) –

0

은 구두점이 아닌 문자는 제거하지만 문자열의 챕터는 계속 추적합니다.

이 작업을 수행하는 고전적인 방법은 당신이 유지하기 위해 (CAPITULO [0-9]+를) 싶어 건에 일치하는 것, 또는 (|) 다른 것들 당신이하지 유지하려는 할 -이 경우, 비 구두점 문자 (\w)를 가져 와서 캡처 한 다음 빈 문자열로 바꿉니다.

const regexp = /CAPITULO [0-9]+|(\w)/g; 
 

 
const input = "CAPITULO 22 .#(nonpunctuation characters $%&*'"; 
 

 
const processed = input.replace(regexp, (match, match1) => match1 ? '' : match); 
 

 
console.log(processed);

당신이 정말로 유지하기 위해 모든 구두점 문자를 나열 할 경우의 위치를 ​​유지하려면, 다음

[^\\?.,:;!¡¿。、·*()[\]\-–_«»'\/@#$&\%\^=+\|<>\"] 

으로 위의 \w 교체 남은 문자를 입력 한 다음 교체 기능을

(match, match1) => match1 ? ' ' : match 
+0

그는 보존 할 문자의 특정 정규 표현식을 가지고 있습니다. 또한 캐릭터 위치를 보존하기를 원합니다. –

관련 문제