1

在 JavaScript 中,一个数字后跟一个单词的正则表达式是什么?我需要抓住数字和单词并在计算后将它们都替换掉。

以下是示例形式的条件:

123 dollars => Catch the '123' and the 'dollars'.
foo bar 0.2 dollars => 0.2 and dollars
foo bar.5 dollar => 5 and dollar (notice the dot before 5)
foo bar.5.6 dollar => 5.6 and dollar
foo bar.5.6.7 dollar => skip (could be only 0 or 1 dot)
foo bar5 dollar => skip
foo bar 5dollar => 5 and dollar
5dollar => 5 and dollar
foo bar5dollar => skip
  • 当然 123.555、0.365、5454.1 也是数字。
  • 为了使事情更简单,这个词是一个特定的词(例如美元|欧元|日元)。

  • 好的..谢谢大家...这是我到目前为止所做的基本功能:

    var text = "foo bar 15 美元。bla bla .."; var 货币 = { 美元:0.795 };

    document.write(text.replace(/\b((?:\d+.)?\d+) *([a-zA-Z]+)/, function(a,b,c){ return currency[c] ? b * 货币[c] + '欧元' : a; } ));

4

3 回答 3

4

尝试这个:

/\b(\d*\.?\d+) *([a-zA-Z]+)/

这也将匹配诸如.5 tests. 如果你不想要那个,使用这个:

/\b((?:\d+\.)?\d+) *([a-zA-Z]+)/

并避免匹配“5.5.5 美元”:

/(?:[^\d]\.| |^)((?:\d+\.)?\d+) *([a-zA-Z]+)/
于 2012-08-31T19:50:10.860 回答
1

快速尝试:

text.match( /\b(\d+\.?\d*)\s*(dollars?)/ );

如果你想做美元/美元和欧元/欧元,那么:

text.match( /\b(\d+\.?\d*)\s*(dollars?|euros?)/ );

\s将匹配所有空格,包括制表符。如果您只想要空格,那么只需放置一个空格(就像其他答案一样):

text.match( /\b(\d+\.?\d*) *(dollars?|euros?)/ );
于 2012-08-31T19:49:27.587 回答
0
string.replace(/\d+(?=\s*(\w+))/, function(match) {
    return 'your replace';
});
于 2012-08-31T20:10:30.973 回答