Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单词边界匹配浮点,后跟可选空格_Javascript_Regex_Word Boundary - Fatal编程技术网

Javascript 单词边界匹配浮点,后跟可选空格

Javascript 单词边界匹配浮点,后跟可选空格,javascript,regex,word-boundary,Javascript,Regex,Word Boundary,我试图匹配一个浮点数,后跟一个可选空格,后跟一个符号列表,可以表示为 price of rldtoken 420 rld.token 0.28 btc 42.37 rldtoken to xrp 42.37rldtoken to xmr cost of rldtoken 10 btc 12.47 rldtoken to xmr whatisrldtoken btcc price btc cost 0.2btc 我目前正在使用这个正则表达式 ((?:0|[1-9]\d*)?(?:\.\d+)?)

我试图匹配一个浮点数,后跟一个可选空格,后跟一个符号列表,可以表示为

price of rldtoken
420 rld.token 0.28 btc
42.37 rldtoken to xrp
42.37rldtoken to xmr
cost of rldtoken
10 btc 12.47 rldtoken to xmr
whatisrldtoken
btcc price
btc cost
0.2btc
我目前正在使用这个正则表达式

((?:0|[1-9]\d*)?(?:\.\d+)?)\s*\b(rld[\W_]*token|btcc|btc|ark|xmr|xrp)\b
分解为

((?:0|[1-9]\d*)?(?:\.\d+)?) Match float
\s* Match 0 or more spaces
\b(rld[\W_]*token|btcc|btc|ark|xmr|xrp)\b Match words
除了42.37rldtoken与xrp和0.2btc之外,其他都匹配,我假设这与空间和单词边界有关

如果我删除单词边界,它将匹配我不想匹配的whatisrldtoken

对于如何进行的一些指导,我们将不胜感激

编辑 一切正常运行

您可以使用tis正则表达式:

(?:(\.\d+|\b\d+(?:\.\d+)?)\s*|\b)(rld[\W_]*token|btcc|btc|ark|xmr|xrp)\b


要匹配浮点数,更准确的方法是交替匹配以点开头的数字,而不是保留两个部分的可选性,这将导致匹配空字符串。

感谢您的尝试,但第一个部分没有匹配“rldtoken的价格”问题是如果没有浮点数,为了将数量取为1,还需要进行匹配,你想将空字符串作为浮点数进行匹配吗?是的,这样我可以从中提取数量,返回空或未定义的数量,我可以将其转换为1,我猜我们可以做一个或类似于此的数字,可选空格后跟单词边界或单词边界可爱!这似乎很有效!非常感谢你