Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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 - Fatal编程技术网

Javascript 厚颜无耻的正则表达式帮助:子字符串或匹配字符串的数字部分

Javascript 厚颜无耻的正则表达式帮助:子字符串或匹配字符串的数字部分,javascript,regex,Javascript,Regex,我要22.50英镑 尝试: foo = "$22.50 + taxes" 我有缺陷的逻辑?“以美元符号开头,然后返回尽可能多的非“+”字符,然后返回该字符。” 如何仅获取数字部分?假设实际数字22.5是一个变量,可以是任何数字,但其周围的文本将是一致的。您可以使用此正则表达式匹配$和数字: foo.match(/^\$([^\ +])/) 或者使用lookahead从$进行匹配,直到获得“+”: 无需在开头锚定regexp,或匹配美元符号,或匹配以下空格和加号。只需获取数字和句点的序列: f

我要22.50英镑

尝试:

foo = "$22.50 + taxes"
我有缺陷的逻辑?“以美元符号开头,然后返回尽可能多的非“+”字符,然后返回该字符。”


如何仅获取数字部分?假设实际数字22.5是一个变量,可以是任何数字,但其周围的文本将是一致的。

您可以使用此正则表达式匹配
$
和数字:

foo.match(/^\$([^\ +])/)
或者使用lookahead从
$
进行匹配,直到获得
“+”


无需在开头锚定regexp,或匹配美元符号,或匹配以下空格和加号。只需获取数字和句点的序列:

foo.match(/^\$.*(?= \+)/)
//=> ["$22.50"]

非常好,谢谢。非常喜欢前瞻方法。我在另一个字符串上测试这个回溯方法,但我很挣扎。你能看到我的尝试有什么问题吗?var fr=“1 staff basic cadeau d'une valeur de 22,50$taxes en sus”尝试了:fr.match(/^de.*=\$)/、fr.match(/^de.*=)/)和其他一些。所有返回null?
fr.match(/^)*(?=\$)/)
将为您提供匹配项。
fr.match(/^de.*(=\$)/)
不起作用,因为您的输入不是以
de
开头的:“您只付了我22.50美元…”、“第1.2.3节”等,但其周围的文本将保持一致。
foo.match(/^\$.*(?= \+)/)
//=> ["$22.50"]
foo.match(/[\d.]+/)

> ["22.50"]