首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从一串文字中提取美元

从一串文字中提取美元
EN

Stack Overflow用户
提问于 2015-11-19 22:38:15
回答 3查看 55关注 0票数 1
代码语言:javascript
复制
var cats = "$22.50 + taxes";
var dogs = "4 Premium Plan Gifts for $150.00 + taxes";
var chat = "3 Forfait supérieur cadea... de 150,00 $ taxes en sus"

一开始,我以为我是在处理一个与var cat一致的模式。所以我用这个regex来返回美元:cats.match(/^\$.*(?= \+)/);

但事实证明,字符串需要几个排列,唯一确定的是,我想要的数字要么以$开头,要么以空格美元' $'结尾。

有什么神奇的指标吗?我可以用它来返回美元号码吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-19 22:44:52

这将搜索数字或十进制分隔符,或者在前面加上美元符号,或者后面跟着空格和美元符号:

代码语言:javascript
复制
cats.match(/(\$[\d.,]+|[\d.,]+ \$)/);

https://regex101.com/r/lI1fB3/2

票数 2
EN

Stack Overflow用户

发布于 2015-11-19 22:50:56

下面将给出带前导/尾随$的所有数字:

代码语言:javascript
复制
var data = '$22.50 + taxes ' + 
    '4 Premium Plan Gifts for $150.00 + taxes ' + 
    '3 Forfait supérieur cadea... de 150,00 $ taxes en sus';

console.log(data.match(/(\$[0-9,.]+|[0-9,.]+\s*\$)/g)); // ["$22.50", "$150.00", "150,00 $"]

细目:

代码语言:javascript
复制
/ # regex start
  ( # capturing group start
    \$ # literal $
    [0-9,.]+ # 1 or more of the following characters "0", "1", .., "9", ",", "."
    | # or operator (meaning ether left hand side or right hand side needs to be true
    [0-9,.]+ # 1 or more of the following characters "0", "1", .., "9", ",", "."
    \s* # 0 or more spaces
    \$ # literal $
  ) # capturing group end
/ # regex end
g

如果要从文本中删除$,可以使用以下命令:

代码语言:javascript
复制
console.log(data.replace(/(?:\$([0-9,.]+)|([0-9,.])+\s*\$)/g, "$1$2")); // 22.50 + taxes 4 Premium Plan Gifts for 150.00 + taxes 3 Forfait supérieur cadea... de 0 taxes en sus

要注意的事情:

代码语言:javascript
复制
(?:) # non capturing group (will not produce $1, $2, ...)
票数 1
EN

Stack Overflow用户

发布于 2015-11-19 22:46:30

你可以用这个:

代码语言:javascript
复制
var cats = "$22.50 + taxes";
var dogs = "4 Premium Plan Gifts for $150.00 + taxes";
var chat = "3 Forfait supérieur cadea... de 150,00 $ taxes en sus";

console.log(  cats.replace(/\$\s*(\d+)/, "$1").replace(/(\d+)\s*\$/, "$1")  );
// out: 22.50 + taxes
console.log(  dogs.replace(/\$\s*(\d+)/, "$1").replace(/(\d+)\s*\$/, "$1")  );
// out: 4 Premium Plan Gifts for 150.00 + taxes
console.log(  chat.replace(/\$\s*(\d+)/, "$1").replace(/(\d+)\s*\$/, "$1")  );
// out: 3 Forfait supérieur cadea... de 150,00 taxes en sus

或者只使用一个替换:

代码语言:javascript
复制
console.log(  chat.replace(/\$\s*(\d+)|(\d+)\s*\$/, "$1$2")  )
// out: 3 Forfait supérieur cadea... de 150,00 taxes en sus

如果要替换所有出现的事件,请使用“g”(上面的代码只替换第一个):

代码语言:javascript
复制
console.log(  (cats+" and "+dogs).replace(/\$\s*(\d+)|(\d+)\s*\$/g, "$1$2")  );
// out: 22.50 + taxes and 4 Premium Plan Gifts for 150.00 + taxes
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33815653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档