[英]Regular expression to return numbers with floating point within parentheses
这是一个示例字符串
var s = "some text 123 [Price $20.99] some other text";
我想获取括在方括号中的任何数值以及小数点。
我试过的是
s.match(/\d+.\d+/);
结果是123,20.99,但我不希望它获取括号外的数字
谁能告诉我我做错了吗?
欢迎来到正则表达式的世界!
小数点在正则表达式中是一个特殊字符 ,如果要按字面值进行匹配,则需要用反斜杠( \\
)对其进行转义。
这对我有效(从Chrome JavaScript控制台):
> var s = "some text 123 [Price $20.99] some other text";
> s.match(/\d+\.\d+/)[0];
"20.99"
如果只想在方括号内进行搜索,则也需要添加方括号; 方括号也很特殊,因此需要转义。 另外,如果想在方括号和数字之间插入内容,则也需要专门考虑。 然后,您需要使用捕获括号,这意味着您需要以与第一种简单情况不同的方式访问匹配项。 这对我有用:
> var t = "Some text 123 and decimal number 12.34 and now [in square brackets 56.78] yada yada";
> t.match( /\[.*?(\d+\.\d+).*?\]/ )[1]
"56.78"
让我与您一起进行正则表达式:
\\[
文字方括号 .*?
除换行符外的任何字符,零次或多次,非贪婪 (
开始捕获 \\d+
数字,一次或多次 \\.
文字点 \\d+
数字,一次或多次 )
结束捕捉 .*?
除换行符外的任何字符,零次或多次,非贪婪 \\]
文字方括号 您得到一个数组作为回报。 数组元素0
仍然是整个匹配项,数组元素1
是第一次捕获的内容。
我有这个工作
s.match(/\[*(\d+.\d+)\]/)[1]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.