Javascript:如果字符串是非数字的,则从字符串中删除尾随字符

时间:2017-12-20 21:10:17

标签: javascript regex

我将代码传递给API。这些代码是字母数字,如下所示:M84.534D

我刚刚发现API不使用尾随字母。换句话说,API期待M84.534,最后没有字母D. 我遇到的问题是代码的格式不一样。 我可能有M84.534DAC或M84.534。

在发送代码之前我需要完成的是从代码末尾删除任何非数字字符,所以在示例中:

M84.534D - >我需要通过M84.534

M84.534DAC - >我还需要通过M84.534

是否有任何功能或正则表达式会这样做?

提前感谢所有人。

3 个答案:

答案 0 :(得分:2)

您可以使用下面的正则表达式。它将从字符串末尾删除任何不是数字的内容



let code = 'M84.534DAC'

console.log(code.replace(/[^0-9]+?$/, ""));




  • [^0-9]匹配任何不是数字的人
  • +?将匹配1到无限次
  • $将匹配字符串的结尾

如此链接在一起,它将匹配字符串末尾的任何非数字,并将其替换为空。

答案 1 :(得分:1)

您可以使用以下表达式:

\D*$

如:



var somestring = "M84.534D".replace(/\D*$/, '');
console.log(somestring);




<强>说明: \D代表 \d,明星*表示零次或多次(贪婪),$将表达式锚定到结尾字符串。

答案 2 :(得分:0)

鉴于您的有限数据样本,这个简单的正则表达式可以解决问题。你只需用空字符串替换匹配。

我已经使用了document.write,因此我们可以看到结果。你可以用任何你想要的方式使用它。

var testData = [
  'M84.534D',
  'M84.534DAC'
]

regex = /\D+$/

testData.forEach((item) => {
   var cleanValue = item.replace(regex, '')
   document.write(cleanValue + '<br>')
})

RegEx细分: \D =任何不是数字的东西 + =一次或多次出现 $ =行/输入结束