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