Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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,我有一些字符串,我想从中提取数字。字符串可以有多种格式,例如: 机翼上的某物$(0.55)$0.75$(0.10) 我希望捕获这些组,以便最终结果是: 机翼上的东西 (0.55) 0.75 (0.10) 我永远不知道是否会有一个“$”,或者数字是否会是十进制,或者需要捕获多少个数字(例如,在本例中有3个数字,但可能有4个)。现在我有([\w\s]*)([\w\d]*),它捕获字符串和值: 机翼上的东西 $(0.55)$0.75$(0.10) 但似乎无法解析单个值。我应该进行拆分 alert('

我有一些字符串,我想从中提取数字。字符串可以有多种格式,例如:

机翼上的某物$(0.55)$0.75$(0.10)

我希望捕获这些组,以便最终结果是:

  • 机翼上的东西
  • (0.55)
  • 0.75
  • (0.10)
  • 我永远不知道是否会有一个“$”,或者数字是否会是十进制,或者需要捕获多少个数字(例如,在本例中有3个数字,但可能有4个)。现在我有
    ([\w\s]*)([\w\d]*)
    ,它捕获字符串和值:

  • 机翼上的东西
  • $(0.55)$0.75$(0.10)
  • 但似乎无法解析单个值。

    我应该进行拆分

    alert('something on the wing$(0.55)$0.75$(0.10)”。拆分(/\s*\$\s*/)
    我应该进行拆分


    警报(“机翼上的某物$(0.55)$0.75$(0.10)”.split(/\s*\$\s*/)
    您可以使用以下正则表达式
    split

    /\s*\$?(\(?\d*\.?\d+\)?)\s*/
    
    火柴

    • \$?
      -可选的
      $
      (因为它可能存在或不存在,但我们需要将其从结果中排除)
    • (\(?\d*\。\d+\)?)
      -第1组(捕获的值输出到结果数组中,并使用
      拆分
      )在可选括号内匹配浮点值:
      • \(?
        -可选的
      • \d*
        -零位或更多位
      • \.?
        -可选的
      • \d+
        -1+位
      • \)?
        -可选的
    • \s*
      -将匹配零个或多个空格(以便不修剪结果数组的元素)
    请参阅JS演示:

    var re=/\s*\$(\(?\d*\.?\d+\)?)\s*/;
    var str=‘机翼上的某物$(0.55)$0.75$(0.10)’;
    var res=str.split(re).filter(布尔);/。过滤器(布尔值)将删除空值
    
    document.body.innerHTML=“+JSON.stringify(res,0,4)+”您可以使用以下正则表达式拆分代码:

    /\s*\$?(\(?\d*\.?\d+\)?)\s*/
    
    ^[\w\s]+|[\d\.()]+?(?=\s|$)
    
    火柴

    • \$?
      -可选的
      $
      (因为它可能存在或不存在,但我们需要将其从结果中排除)
    • (\(?\d*\。\d+\)?)
      -第1组(捕获的值输出到结果数组中,并使用
      拆分
      )在可选括号内匹配浮点值:
      • \(?
        -可选的
      • \d*
        -零位或更多位
      • \.?
        -可选的
      • \d+
        -1+位
      • \)?
        -可选的
    • \s*
      -将匹配零个或多个空格(以便不修剪结果数组的元素)
    请参阅JS演示:

    var re=/\s*\$(\(?\d*\.?\d+\)?)\s*/;
    var str=‘机翼上的某物$(0.55)$0.75$(0.10)’;
    var res=str.split(re).filter(布尔);/。过滤器(布尔值)将删除空值
    
    document.body.innerHTML=“+JSON.stringify(res,0,4)+”即使没有任何捕获,这也很可能按照您想要的方式完成工作。由于没有捕获括号,它将捕获句子后面的尽可能多的数据,并以数组的形式返回

    ^[\w\s]+|[\d\.()]+?(?=\s|$)
    

    var r=/^[\w\s]+|[\d\.()]+?(?=\s |$)/g,
    s=“机翼上的某物$(0.55)$0.75$(0.10)$12.75€(4.25)”,
    m=s.match(r);
    
    document.write(“+JSON.stringify(m,null,2)+”)即使没有任何捕获,这也很可能按照您想要的方式完成工作。由于没有捕获括号,它将捕获句子后面的尽可能多的数据,并以数组的形式返回

    var r=/^[\w\s]+|[\d\.()]+?(?=\s |$)/g,
    s=“机翼上的某物$(0.55)$0.75$(0.10)$12.75€(4.25)”,
    m=s.match(r);
    

    document.write(“+JSON.stringify(m,null,2)+”)
    我永远不知道是否会有一个“$”或者我需要捕获多少值。
    @ritesht93然后他必须提供一个例子来说明这种情况。@AvinashRaj:如果用一种明确的方式陈述,一个例子是多余的。很明显,OP需要可选括号中的数字以及它们周围的内容。那么,为什么他想要
    翅膀上的东西
    ?我不是心理媒介/心理主义者:)让OP解释一下。
    我永远不知道是否会有一个“$”或者需要捕获多少值。
    @ritesht93然后他必须提供一个例子case.@AvinashRaj:如果以明确的方式陈述,那么示例是多余的。很明显,OP需要可选括号中的数字以及它们周围的内容。那么,为什么他想要
    翅膀上的东西
    ?我不是心理媒介/心理主义者:)让OP解释一下。
    我永远不知道是否会有一个“$”或者需要捕获多少值,不清楚..
    我永远不知道是否会有“$”或需要捕获多少值,不清楚..如果我想让十进制成为可选的,它会是
    /\s*\$?(\(?\d*(\)?\d+\)\s*/
    ?@Jeff不,它是
    \d+(?:\。\d+)
    所以,我添加了
    \,?
    来允许逗号,但这会使它在带有2+逗号的数字上分崩离析(即123456789)。我将正则表达式更改为
    /\s*\$?(\(?\d*[,]?\d+\)?)\s*/g
    ,但这不起作用。我假设是因为这个模式假设一组数字在前面,一组在后面。如何指定数字/逗号的模式可以出现多次?具有可选数字分组符号的数字的模式是
    (?:\d{1,3}(?:,\d{3})*\d*)(?:\。\d+)(?:\。\d+)
    如果我想使十进制成为可选的,它只是
    /\s*\$(\(?\d*(\)\d+\))\s*/
    ?@Jeff no,它是
    \d+(?:\)。\d+),
    ,所以,我添加了
    ,?
    也允许使用逗号,但这会使它在带有2+逗号的数字(即123456789)上分崩离析。我将正则表达式改为