正则表达式后跟一个单词

时间:2012-08-31 19:45:31

标签: javascript regex replace

在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 currency = {     美元:0.795 };

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

3 个答案:

答案 0 :(得分:2)

试试这个:

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

这也会匹配.5 tests之类的内容。如果您不想这样,请使用:

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

避免匹配“5.5.5美元”:

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

答案 1 :(得分:1)

快速尝试:

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

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

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

同样\s会匹配包括标签在内的所有空格..如果你只想要空格,那么只需要放一个空格(就像另一个答案):

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

答案 2 :(得分:1)

string.replace(/\d+(?=\s*(\w+))/, function(match) {
    return 'your replace';
});