从字符串
中删除数字 questionText = "1 ding ?"
我想替换这个号码和问号,号码可以是任意号码,我试过以下代码不能正常工作
questionText.replace(/[0-9]/g, '');
答案 0 :(得分:126)
非常接近,试试:
questionText = questionText.replace(/[0-9]/g, '');
replace
对现有字符串不起作用,它返回一个新字符串。如果你想使用它,你需要保留它!
同样,您可以使用新变量:
var withNoDigits = questionText.replace(/[0-9]/g, '');
一次删除整个数字块的最后一招,但那个可能走得太远了:
questionText = questionText.replace(/\d+/g, '');
答案 1 :(得分:10)
字符串是immutable,这就是questionText.replace(/[0-9]/g, '');
上 的原因,但它并没有改变问题文本 - 串。您必须再次将替换结果分配给另一个String变量或者再分配给textText。
var cleanedQuestionText = questionText.replace(/[0-9]/g, '');
或者1进去(使用\d+
,请参阅Kobi的回答):
questionText = ("1 ding ?").replace(/\d+/g,'');
如果您想要修剪前导(和尾随)空间,请执行以下操作:
questionText = ("1 ding ?").replace(/\d+|^\s+|\s+$/g,'');
答案 2 :(得分:8)
你非常接近。
以下是您在问题中写的代码:
questionText.replace(/[0-9]/g, '');
您编写的代码确实会查看questionText变量,并生成输出,该输出是原始字符串,但数字替换为空字符串。
但是,它不会自动将其分配回原始变量。您需要指定分配给它的内容:
questionText = questionText.replace(/[0-9]/g, '');
答案 3 :(得分:1)
只是想添加,因为某人可能感兴趣,您也可以考虑另一种方式来解决问题。我不确定这里是否有兴趣,但我觉得它很重要。
我的另一种方式是说“剥去任何不符合我要求的东西,即如果你只想要'叮',你可以说:
var strippedText =(“1 ding?”)。replace(/ [^ a-zA-Z] / g,'');
这基本上意味着“删除nog a,b,c,d ...... Z(任何字母)的任何东西。
答案 4 :(得分:0)
这可以在没有$(".myGalleryBtn").click(function(){
var galleryid = $(this).attr("data-id");
window.location.hash = "#gallery" + galleryid;
});
的情况下完成,这会更有效:
regex
作为奖励,它还会存储数字,这对某些人可能有用。
答案 5 :(得分:0)
第二个选择是匹配并返回与某些表达式类似的非数字
/\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的右上角进行说明。如果愿意,您还可以在this link中查看它如何与某些示例输入匹配。
jex.im可视化正则表达式:
答案 6 :(得分:0)
您可以使用.match && join()方法。 .match()返回一个数组,而.join()返回一个字符串
function digitsBeGone(str){
return str.match(/\D/g).join('')
}