繁体   English   中英

Javascript:如果字符串不是数字,则从字符串中删除它们

[英]Javascript: Remove trailing chars from string if they are non-numeric

我正在将代码传递给API。 这些代码是字母数字,例如:M84.534D

我刚刚发现该API不使用结尾字母。 换句话说,API预期为M84.534,结尾没有字母D。 我遇到的问题是代码的格式不相同。 我可能有M84.534DAC或M84.534。

发送代码之前,我需要完成的工作是从代码末尾删除所有非数字字符,因此在示例中:

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

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

是否有任何功能或正则表达式可以做到这一点?

预先谢谢大家。

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

 let code = 'M84.534DAC' console.log(code.replace(/[^0-9]+?$/, "")); 

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

这样链接在一起,它将匹配字符串末尾的任何非数字,并用任何内容将其替换。

您可以使用以下表达式:

\D*$

如:

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

说明: \\D表示不是 \\d ,星号*表示零次或多次(贪婪地),并且$将表达式锚定到字符串的末尾。

给定有限的数据样本,此简单的正则表达式可以解决问题。 您只需将匹配项替换为空字符串即可。

我使用document.write只是为了我们可以看到结果。 您可以根据需要使用此方法。

 var testData = [ 'M84.534D', 'M84.534DAC' ] regex = /\\D+$/ testData.forEach((item) => { var cleanValue = item.replace(regex, '') document.write(cleanValue + '<br>') }) 

RegEx分解: \\D =任何不是数字的值+ =一次或多次出现$ =行尾/输入

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM