繁体   English   中英

正则表达式返回带括号内浮点数的数字

[英]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"

让我与您一起进行正则表达式:

  1. \\[文字方括号
  2. .*? 除换行符外的任何字符,零次或多次,非贪婪
  3. (开始捕获
  4. \\d+数字,一次或多次
  5. \\. 文字点
  6. \\d+数字,一次或多次
  7. )结束捕捉
  8. .*? 除换行符外的任何字符,零次或多次,非贪婪
  9. \\]文字方括号

您得到一个数组作为回报。 数组元素0仍然是整个匹配项,数组元素1是第一次捕获的内容。

我有这个工作

s.match(/\[*(\d+.\d+)\]/)[1]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM