从字母数字字符串中删除数值

时间:2015-06-05 09:52:47

标签: javascript regex

我想从字符串中删除所有数值 但仅当字符串包含至少一个字母时。

我如何在JavaScript中执行此操作?

例如

var s = "asd23asd"

然后结果必须是asdasd

但是如果

var s = "123123"

然后结果必须是123123,因为字符串没有任何字母。

4 个答案:

答案 0 :(得分:13)

function filter(string){
     var result = string.replace(/\d/g,'')
     return result || string;
}

或直接

var newString = string.replace(/\d/g,'') || string;

为什么||工作

||和&是条件运算符,并确保你使用if,while ...

如果你喜欢

var c1 = false, c2 = true, c3= false, c4 = true;
if( c1 || c2 || c3 || c4) {
}

此评估将在有效或无效的第一时刻停止。

这个心态认为评价在c2中停止这种思维更快 (true || false)比(false || true)

此时我们可以添加另一个概念,运算符总是返回评估中的最后一个元素

(假||'嘿' || true)返回'嘿嘿,记得在JS'嘿'是的,但是''是假的

有趣的例子:

var example = {
  'value' : {
     'sub_value' : 4
  }
}

var test = example && example.value && example.value.sub_value;
console.log(test) //4

var test_2 = example && example.no_exist && example.no_exist.sub_value;
console.log(test_2) //undefined


var test_3 = example.valno_existue.sub_value; //exception

function test_function(value){
   value = value || 4; //you can expecify default values
}

答案 1 :(得分:3)

你可以试试这个。首先检查单词是否包含任何字母,如果是,则替换。

var s = "asd23asd";
if(/\w+/.test(s))
    s = s.replace(/\d+/g, '');

答案 2 :(得分:0)

([a-zA-Z]+)\d+|\d+(?=[a-zA-Z]+)

你可以试试这个。$1。见。演示。

https://regex101.com/r/nS2lT4/27

答案 3 :(得分:-1)

Javascript代码

  var txt='asd23ASd3';
  if(parseInt(txt))
      var parsed=txt;
  else
      var parsed=txt.replace ( /[^a-zA-Z]/g, '');
  console.log(parsed)