在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
为了使事情更简单,这个词是一个特定的词(例如 美元|欧元|日元)
好的..谢谢大家......这是我到目前为止所做的基本功能:
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; } ));
答案 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';
});