Javascript 如何从字符串中删除数字?

Javascript 如何从字符串中删除数字?,javascript,regex,Javascript,Regex,我想从字符串中删除数字: questionText = "1 ding ?" 我想替换编号1编号和问号?。它可以是任何数字。我尝试了以下非工作代码 questionText.replace(/[0-9]/g, ''); 非常接近,请尝试: questionText = questionText.replace(/[0-9]/g, ''); replace对现有字符串无效,它返回一个新字符串。如果你想使用它,你需要保留它 类似地,您可以使用新变量: var withNoDigits = qu

我想从字符串中删除数字:

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变量,并生成了原始字符串的输出,但数字替换为空字符串

但是,它不会自动将其分配回原始变量。您需要指定将其分配给什么:

questionText = questionText.replace(/[0-9]/g, '');
字符串是,这就是为什么
questionText.replace(/[0-9]/g')
本身可以工作,但不会更改questionText字符串。您必须将替换结果再次分配给另一个字符串变量或questionText本身

var cleanedQuestionText = questionText.replace(/[0-9]/g, '');
或者一次过(使用
\d+
,参见Kobi的答案):

如果您想在修剪前导(和尾随)空间时:

 questionText = ("1 ding ?").replace(/\d+|^\s+|\s+$/g,'');

只是想补充一点,因为它可能会引起某人的兴趣,你也可以用另一种方式思考这个问题。我不确定这在这里是否有意义,但我认为它是相关的

我的另一个意思是说“剥掉我不想要的东西,也就是说,如果你只想要‘叮’,你可以说:

var strippedText=(“1丁?”)。替换(/[^a-zA-Z]/g')


这基本上意味着“删除任何非a、b、c、d…Z(任何字母)。

这可以在没有
regex的情况下完成,这更有效:

var questionText = "1 ding ?"
var index = 0;
var num = "";
do
{
    num += questionText[index];
} while (questionText[++index] >= "0" && questionText[index] <= "9");
questionText = questionText.substring(num.length);
var questionText=“1叮?”
var指数=0;
var num=“”;
做
{
num+=问题文本[索引];

}而(questionText[++index]>=“0”&&questionText[index]第二个选项是匹配并返回非数字,其表达式类似于

/\D+/g
这可能适用于问题中的特定字符串(
1ding?

试验
函数非数字字符串(str){
常量regex=/\D+/g;
让m;
非数字arr=[];
while((m=regex.exec(str))!==null){
//这是避免具有零宽度匹配的无限循环所必需的
if(m.index==regex.lastIndex){
regex.lastIndex++;
}
m、 forEach((匹配,组索引)=>{
如果(匹配.trim()!=“”){
非数字arr.push(匹配修剪());
}
});
}
返回非数字arr;
}
常量str=`1丁?124
12丁?
123叮?123`;
console.log(非数字字符串(str));
您可以使用.match&&join()方法..match()返回一个数组,.join()生成一个字符串

function digitsBeGone(str){
  return str.match(/\D/g).join('')
}

到底什么不起作用?因为它正在删除数字…您还需要删除小数点吗?@Berbi此问题不重复。引用的“替换方法不起作用”没有正确的标题,因此用户可以键入并搜索“从字符串中删除数字”。不好的调节。不要忘记所有正则表达式上的
/g
-JavaScript这样很烦人
:)
我可以替换吗?&*来自一个替换方法中的字符串,如str.replace(“?,*”,”);那不行,我想把两者都换掉吗?在我的空间里string@kiran-记住转义它们,例如
\?,\*
,但您可能想要
/[?*]/g
。当你有一个的时候,请随意选择!
function digitsBeGone(str){
  return str.match(/\D/g).join('')
}