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(/^\$.*(?= \+)/);
但事实证明,字符串需要几个排列,唯一确定的是,我想要的数字要么以$开头,要么以空格美元' $'结尾。
有什么神奇的指标吗?我可以用它来返回美元号码吗?
发布于 2015-11-19 22:44:52
这将搜索数字或十进制分隔符,或者在前面加上美元符号,或者后面跟着空格和美元符号:
cats.match(/(\$[\d.,]+|[\d.,]+ \$)/);发布于 2015-11-19 22:50:56
下面将给出带前导/尾随$的所有数字:
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 $"]细目:
/ # 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如果要从文本中删除$,可以使用以下命令:
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要注意的事情:
(?:) # non capturing group (will not produce $1, $2, ...)发布于 2015-11-19 22:46:30
你可以用这个:
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或者只使用一个替换:
console.log( chat.replace(/\$\s*(\d+)|(\d+)\s*\$/, "$1$2") )
// out: 3 Forfait supérieur cadea... de 150,00 taxes en sus如果要替换所有出现的事件,请使用“g”(上面的代码只替换第一个):
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 + taxeshttps://stackoverflow.com/questions/33815653
复制相似问题