문자열에서 숫자를 제거하고 싶습니다.
questionText = "1 ding ?"
1
번호와 물음표 를 바꾸고 싶습니다 ?
. 임의의 숫자 일 수 있습니다. 다음 비 작동 코드를 시도했습니다.
questionText.replace(/[0-9]/g, '');
문자열에서 숫자를 제거하고 싶습니다.
questionText = "1 ding ?"
1
번호와 물음표 를 바꾸고 싶습니다 ?
. 임의의 숫자 일 수 있습니다. 다음 비 작동 코드를 시도했습니다.
questionText.replace(/[0-9]/g, '');
답변:
아주 가깝습니다.
questionText = questionText.replace(/[0-9]/g, '');
replace
기존 문자열에서 작동하지 않으면 새 문자열을 반환합니다. 사용하려면 보관해야합니다!
마찬가지로 새 변수를 사용할 수 있습니다.
var withNoDigits = questionText.replace(/[0-9]/g, '');
한 번에 전체 자릿수 블록을 제거하는 마지막 트릭이지만 너무 멀리 갈 수 있습니다.
questionText = questionText.replace(/\d+/g, '');
문자열은 불변의 이유 즉, questionText.replace(/[0-9]/g, '');
그것은 자신의에 않는 일을,하지만 questionText 문자열을 변경하지 않습니다. 대체 결과를 다른 String- 변수에 할당하거나 questionText 자체에 다시 할당해야합니다.
var cleanedQuestionText = questionText.replace(/[0-9]/g, '');
또는 한 번에 (사용 \d+
, Kobi의 답변 참조) :
questionText = ("1 ding ?").replace(/\d+/g,'');
그리고 당신이 그것에있는 동안 선행 (및 후행) 공백을 자르려면 :
questionText = ("1 ding ?").replace(/\d+|^\s+|\s+$/g,'');
/g
모든 정규식을 잊지 마세요 -JavaScript는 그런 식으로 짜증나게합니다:)
두 번째 옵션은 다음과 유사한 식으로 숫자가 아닌 항목을 일치시키고 반환하는 것입니다.
/\D+/g
질문 ( 1 ding ?
) 의 특정 문자열에 대해 작동 할 가능성이 높습니다 .
function non_digit_string(str) {
const regex = /\D+/g;
let m;
non_digit_arr = [];
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
m.forEach((match, groupIndex) => {
if (match.trim() != '') {
non_digit_arr.push(match.trim());
}
});
}
return non_digit_arr;
}
const str = `1 ding ? 124
12 ding ?
123 ding ? 123`;
console.log(non_digit_string(str));
표현식을 단순화 / 수정 / 탐색하려는 경우 regex101.com의 오른쪽 상단 패널에 설명되어 있습니다. 원하는 경우이 링크 에서 일부 샘플 입력과 어떻게 일치하는지 볼 수도 있습니다.
jex.im은 정규 표현식을 시각화합니다.
.match && join () 메서드를 사용할 수 있습니다. .match ()는 배열을 반환하고 .join ()은 문자열을 만듭니다.
function digitsBeGone(str){
return str.match(/\D/g).join('')
}