【问题标题】:JS .replace with regexJS .replace 用正则表达式
【发布时间】:2016-08-10 11:03:17
【问题描述】:

我有这样的文字

正确 (99.99руб.) 或 留有空格 (руб. 99.99) 或 右边有空格 (99.99 руб.) 或 左 (руб.99.99)

我想用我的新符号查找和更改货币符号。

这是我的代码示例

var str = "Right (99.99руб.)",
    symbol = '&&';

console.log(str.replace(/\(\d+\.?\d+\s?(.+)\)|\(([^0-9^\s]+)\s?\d+\.\d+\)/g, symbol))

但它用正则表达式 ("(99.99руб.)") 替换了我找到的所有文本,而不是捕获组中的文本 ("руб.")。

如何只替换匹配的文本?

P.S 提前致谢 P.S.S 对不起我的英语

【问题讨论】:

标签: javascript regex string


【解决方案1】:

你可以使用:

руб\.\ ?(\d[\d.]+)|(\d[\d.]*)\ ?руб

并将其替换为$1$2&&,参见a demo on regex101.com


JavaScript:
var string = 'Right (99.99руб.) OR Left with space (руб. 99.99) OR Right with space (99.99 руб.) OR Left (руб.99.99)';
var re = /руб\.\ ?(\d[\d.]+)|(\d[\d.]*)\ ?руб/g;
string = string.replace(re, '$1$2&&');
alert(string);

jsfiddle.net 上查看 JS 小提琴。

【讨论】:

  • 它必须适用于任何货币,不仅是руб。字符串可以留有空格 (৳ 99.99)
  • 并且您不需要使用“右 (99.99руб.) 或左加空格 (руб. 99.99) 或右加空格 (99.99 руб.) 或左 (руб.99.99)”最好写我有一个类似“右(99.99руб.)”或“左有空格(руб. 99.99)”或“右有空格(99.99 руб.)”或“左(руб. 99.99)"
  • regex101.com/r/kR2sX3/1,您可以随时将符号添加到交替组中。
  • @Wiktor Stribiżew 它总是将货币符号放在字符串的末尾
  • :) 这不是你需要的吗?请根据您的需要更新您的问题。
猜你喜欢
  • 2012-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-18
  • 1970-01-01
  • 2012-07-13
  • 2013-10-13
  • 1970-01-01
相关资源
最近更新 更多