获取货币值的小数部分

4

字符串: $ 22.4969694
正则表达式: ([.])+

我尝试使用.test(),但我不是要获得布尔响应,而是要获得.字符的长度数字并进行切割。

所以如果在字符串中检测到.,它将从字符串中切掉$ 22.并将变量值设置为4969694


你必须转义点号,\。它本身是一个通配符,可以匹配任何字符。 - Jeff Breadner
使用正则表达式:([.])+ - Jeff Breadner
3个回答

4

没有正则表达式,这很简单明了。

var str1 = '$ 22.4969694';
var str2 = '$ 22694';

console.log( str1.split('.').pop() )  // 4969694
console.log( str2.split('.').pop() ); // nothing happens


1

我不完全确定您希望最终结果看起来是什么,但这是我想到的可能适合您的方案。

根据您想要的值,这个方案可行。

let vals = ['$ 22.4969694', '$ 22', '$ 22567.00']

vals.forEach(val => {
  let v = val.replace(/^.*\./, '')

  console.log(v)
})


或者:val.replace(/^.*./, '')。这将从字符串前面删除到点,如果存在点的话。如果没有,则不会发生任何事情。 - Jeff Breadner

1
你可以使用 match
const str = '$ 22.4969694';
const regex = /(\$)\s+(\d+)\.(\d+)/

match将返回一个数组。第一个元素是原始字符串,其余元素是匹配项。在这种情况下,货币符号,然后是美元,最后是美分。

str.match(regex) // [ "$ 22.4969694", "$", "22", "4969694" ]

您可以使用普通的数组方法访问它们:
const m = str.match(regex);
console.log(m[3]); // 4969694

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接