JavaScript를 사용하여 문자열에서 공백을 제외한 모든 특수 문자 제거
JavaScript를 사용하여 문자열에서 공백을 제외한 모든 특수문자를 제거하고 싶습니다.
예를들면,abc's test#s
로서 출력해야 한다.abcs tests
.
문자열 치환 함수를 단일 정규식과 함께 사용해야 합니다.특수문자가 문자가 아닌 것을 의미한다고 가정하면 다음과 같은 해결책이 있습니다.
const str = "abc's test#s";
console.log(str.replace(/[^a-zA-Z ]/g, ""));
삭제할 문자를 지정할 수 있습니다.
string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');
또는 숫자와 문자를 제외한 모든 문자를 변경하려면 다음을 수행합니다.
string = string.replace(/[^a-zA-Z0-9]/g, '');
첫 번째 솔루션은 UTF-8 알파벳에서는 작동하지 않습니다.('우리나라' 등의 텍스트가 잘립니다).JavaScript 엔진에서 RegExp를 사용하지 않고 UTF-8을 지원하는 기능을 만들었습니다.기호가 대소문자일 경우 특수문자인 경우 아이디어는 간단합니다.공백은 예외입니다.
function removeSpecials(str) {
var lower = str.toLowerCase();
var upper = str.toUpperCase();
var res = "";
for(var i=0; i<lower.length; ++i) {
if(lower[i] != upper[i] || lower[i].trim() === '')
res += str[i];
}
return res;
}
업데이트: 이 솔루션은 대문자와 소문자가 있는 언어에서만 사용할 수 있습니다.중국어 같은 언어에서는 이 방법이 통하지 않습니다.
업데이트 2: 퍼지 검색 작업을 할 때 원래 솔루션을 찾았습니다.검색 기능을 구현하기 위해 특수 문자도 삭제하려는 경우 더 나은 방법이 있습니다.라틴 문자에서만 문자열을 생성할 수 있는 임의의 번역 라이브러리를 사용합니다.그러면 간단한 Regexp는 특수 문자를 삭제하는 모든 마법을 수행합니다.(이것은 중국어에도 유효하며, 다음과 같이 함으로써 부수적인 이점도 얻을 수 있습니다.)Tromsø
==Tromso
).
search all not (워드 문자 || 공백):
str.replace(/[^\w ]/, '')
JavaScript는 모르지만 regex를 사용할 수 없습니까?
뭐랄까[^\w\d\s]
숫자, 문자 및 공백 이외의 모든 것과 일치합니다.JavaScript에서 구문을 찾는 것은 질문일 뿐입니다.
Seagul의 매우 창의적인 솔루션을 사용해 보았지만 숫자도 특수 문자로 취급되어 제 요구에 맞지 않았습니다.이게 시걸의 해결책에 대한 수정사항입니다.
//return true if char is a number
function isNumber (text) {
if(text) {
var reg = new RegExp('[0-9]+$');
return reg.test(text);
}
return false;
}
function removeSpecial (text) {
if(text) {
var lower = text.toLowerCase();
var upper = text.toUpperCase();
var result = "";
for(var i=0; i<lower.length; ++i) {
if(isNumber(text[i]) || (lower[i] != upper[i]) || (lower[i].trim() === '')) {
result += text[i];
}
}
return result;
}
return '';
}
이것을 사용해 보세요.
var result= stringToReplace.replace(/[^\w\s]/g, '')
[^]
부정하기 위한 거야\w
위해서[a-zA-Z0-9_]
단어 문자 및\s
공간,/[]/g
글로벌용
const str = "abc's@thy#^g&test#s";
console.log(str.replace(/[^a-zA-Z ]/g, ""));
점(.)은 특별한 것으로 간주되지 않을 수 있습니다.Mozfet & Galmy의 답변에 OR 조건을 추가했습니다.
function isNumber (text) {
reg = new RegExp('[0-9]+$');
if(text) {
return reg.test(text);
}
return false;
}
function removeSpecial (text) {
if(text) {
var lower = text.toLowerCase();
var upper = text.toUpperCase();
var result = "";
for(var i=0; i<lower.length; ++i) {
if(isNumber(text[i]) || (lower[i] != upper[i]) || (lower[i].trim() === '') || (lower[i].trim() === '.')) {
result += text[i];
}
}
return result;
}
return '';
}
이것을 시험해 보세요.
const strippedString = htmlString.replace(/(<([^>]+)>)/gi, "");
console.log(strippedString);
const input = `#if_1 $(PR_CONTRACT_END_DATE) == '23-09-2019' #
Test27919<alerts@imimobile.com> #elseif_1 $(PR_CONTRACT_START_DATE) == '20-09-2019' #
Sender539<rama.sns@gmail.com> #elseif_1 $(PR_ACCOUNT_ID) == '1234' #
AdestraSID<hello@imimobile.co> #else_1#Test27919<alerts@imimobile.com>#endif_1#`;
const replaceString = input.split('$(').join('->').split(')').join('<-');
console.log(replaceString.match(/(?<=->).*?(?=<-)/g));
문자열에서 삭제할 특수문자의 목록을 작성한 후 사용자 javascript를 사용하여 특수문자를 모두 제거합니다.
var str = 'abc'de#;:sfjkewr47239847duifyh';
alert(str.replace("'","").replace("#","").replace(";","").replace(":",""));
또는 문자열 전체에 대해 루프를 실행하여 단일 문자를 ASCII 코드와 비교하고 새 문자열을 재생성할 수 있습니다.
언급URL : https://stackoverflow.com/questions/6555182/remove-all-special-characters-except-space-from-a-string-using-javascript
'sourcecode' 카테고리의 다른 글
다른 문자열의 x 위치에 문자열 삽입 (0) | 2022.12.06 |
---|---|
MySQL my.ini 위치 (0) | 2022.12.06 |
일부 거절당하더라도 모든 약속이 완료될 때까지 기다립니다. (0) | 2022.12.06 |
Larabel 5에서 MariaDB를 설정하는 방법 (0) | 2022.12.06 |
3진 연산자에 사용하는 코딩 스타일은 무엇입니까? (0) | 2022.11.27 |