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

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

Javascript 返回括号内带浮点数的数字的正则表达式,javascript,Javascript,这是一个示例字符串 var s = "some text 123 [Price $20.99] some other text"; 我想得到方括号中包含的任何数值以及小数点 我试过的是 s.match(/\d+.\d+/); 结果是123,20.99,但我不希望它获取括号外的数字 谁能告诉我我做错了什么吗?这是我做的 s.match(/\[*(\d+.\d+)\]/)[1] 欢迎来到正则表达式的世界 小数点是正则表达式中的一个符号,如果您想逐字匹配它,则需要使用反斜杠(\)对其进行转义 这

这是一个示例字符串

var s = "some text 123 [Price $20.99] some other text";
我想得到方括号中包含的任何数值以及小数点

我试过的是

s.match(/\d+.\d+/);
结果是123,20.99,但我不希望它获取括号外的数字

谁能告诉我我做错了什么吗?

这是我做的

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

欢迎来到正则表达式的世界

小数点是正则表达式中的一个符号,如果您想逐字匹配它,则需要使用反斜杠(
\
)对其进行转义

这适用于我(从Chrome JavaScript控制台):

如果你想特别地只在方括号内搜索,那么你也需要添加这些;方括号也是特殊的,因此需要转义。另外,如果你想允许括号和数字之间的内容,你也需要特别考虑。然后,您需要使用捕获括号,这意味着您需要以与第一种简单情况稍有不同的方式访问匹配。这对我很有用:

> 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"
让我与您一起介绍regexp:

  • \[
    文字方括号
  • *?
    除换行符以外的任何字符,零次或多次,非贪婪
  • 开始捕获
  • \d+
    编号,一次或多次
  • \。
    文字点
  • \d+
    编号,一次或多次
  • 结束捕获
  • *?
    除换行符以外的任何字符,零次或多次,非贪婪
  • \]
    文字方括号

  • 你得到一个数组作为回报。数组元素
    0
    将再次成为整个匹配项,数组元素
    1
    是第一次捕获的内容。

    必须走,但
    /\[.*(\d+。。。。。。.+.*/\]/
    几乎可以工作与第一个数字的开头不匹配。我得到了这个工作
    s.match(/\[*(\d+。+.+\]/])[1]
    不客气!很乐意帮忙!:)继续锻炼你的肌肉!
    > 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"