从字符串中删除数字?

时间:2011-02-14 15:11:51

标签: javascript regex

从字符串

中删除数字
 questionText = "1 ding ?"

我想替换这个号码和问号,号码可以是任意号码,我试过以下代码不能正常工作

  questionText.replace(/[0-9]/g, '');

7 个答案:

答案 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 ?)中的特定字符串。

Demo

测试

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中查看它如何与某些示例输入匹配。


RegEx电路

jex.im可视化正则表达式:

enter image description here

答案 6 :(得分:0)

您可以使用.match && join()方法。 .match()返回一个数组,而.join()返回一个字符串

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