Javascript 正则表达式,表示后跟单词的数字

Javascript 正则表达式,表示后跟单词的数字,javascript,regex,replace,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 =>

在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..”; 风险值货币={ 美元:0.795 };

    document.write(text.replace(/\b((?:\d+)?\d+)*([a-zA-Z]+)/,函数(a,b,c){ 返回货币[c]?b*货币[c]+‘欧元’:a; } ));

快速尝试:

text.match( /\b(\d+\.?\d*)\s*(dollars?)/ );
如果您想使用美元/美元和欧元/欧元,那么:

text.match( /\b(\d+\.?\d*)\s*(dollars?|euros?)/ );
另外,
\s
将匹配包括制表符在内的所有空白。。如果您只需要空格,则只需放置空格即可(如其他答案所示):

快速尝试:

text.match( /\b(\d+\.?\d*)\s*(dollars?)/ );
如果您想使用美元/美元和欧元/欧元,那么:

text.match( /\b(\d+\.?\d*)\s*(dollars?|euros?)/ );
另外,
\s
将匹配包括制表符在内的所有空白。。如果您只需要空格,则只需放置空格即可(如其他答案所示):

试试这个:

/\b(\d*\.?\d+) *([a-zA-Z]+)/
这也将与
.5测试
等内容相匹配。如果您不希望这样,请使用以下命令:

/\b((?:\d+\.)?\d+) *([a-zA-Z]+)/
为了避免匹配“5.5.5美元”:

试试这个:

/\b(\d*\.?\d+) *([a-zA-Z]+)/
这也将与
.5测试
等内容相匹配。如果您不希望这样,请使用以下命令:

/\b((?:\d+\.)?\d+) *([a-zA-Z]+)/
为了避免匹配“5.5.5美元”:



我相信这方面的正则表达式可能有点复杂,难以调试。你试过自定义解析吗?我对正则表达式不熟悉。。虽然我确实理解基本原理,但这显然是一个复杂的正则表达式。实际上,这并不是一个复杂的正则表达式——比如一个正则表达式,它匹配每个RFC有效电子邮件地址,而不匹配任何其他地址。它们可以有数千个字符长:您可以使用来检查regexp。将文本放在下面的窗口中,将regexp放在上面。我相信这方面的正则表达式可能有点复杂,难以调试。你试过自定义解析吗?我对正则表达式不熟悉。。虽然我确实理解基本原理,但这显然是一个复杂的正则表达式。实际上,这并不是一个复杂的正则表达式——比如一个正则表达式,它匹配每个RFC有效电子邮件地址,而不匹配任何其他地址。它们可以有数千个字符长:您可以使用来检查regexp。将文本放在下方窗口,将regexp放在顶部。“foo bar5 dollar=>skip”-您应该在“foo bar5 dollar=>skip”之前添加一个空格-您应该在挂起之前添加一个空格,您希望单词是“dollar”还是任何单词?如果你想把它变成“美元”,用美元代替([a-zA-Z]+))。我能用美元代替它吗?
(美元?
)欧元?
可以匹配并捕获美元/美元/欧元/欧元,@agreco说的会很好地工作:
/\b(\d*.\d+)*(美元?\欧元?/
好的,试试我刚才添加的第三个正则表达式,以避免与之匹配。等等,你想让这个单词是“dollar”还是其他单词?如果你想把它变成“美元”,用美元代替([a-zA-Z]+)
)。我能用美元代替它吗?
(美元?
)欧元?
可以匹配并捕获美元/美元/欧元/欧元,@agreco说的会很好地工作:
/\b(\d*.\d+)*(美元?\欧元?/
好的,尝试我刚才添加的第三个正则表达式,以避免与之匹配。为什么要使用函数?您几乎不需要回调,因为您可以在替换字符串中引用匹配项。@CallumMacrae是的,您可以,但是如果他想检查匹配项是什么,然后进行替换,他将如何执行?为什么要使用函数?您几乎不需要回调,因为您可以在替换字符串中引用匹配项。@CallumMacrae是的,您可以,但是如果他想检查匹配项,然后替换,他将如何做?