Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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,我需要一个正则表达式来查找以下示例中的所有比较部分 var magicalRegex = ""; var example = '({Color}=="red"|{Color}=="yellow")&{Size}>32'; example.replace(magicalRegex, function (matchedBlock) { console.log(matchedBlock); });

我需要一个正则表达式来查找以下示例中的所有比较部分

        var magicalRegex = "";
        var example = '({Color}=="red"|{Color}=="yellow")&{Size}>32';
        example.replace(magicalRegex, function (matchedBlock) {
            console.log(matchedBlock);
        });

        //so i want to see the following result on console 
        //{Color}=="red"
        //{Color}=="yellow"
        //{Size}>32
事实上,我做了一些事情,但无法完成,你也可以检查以下模板,我无法完成

\{.*?(==|>)

谢谢回答 根据您在regex101上的示例以及代码段中的字符串(两个不同的字符串),下面的regex将完全满足您的需要

答复1 您可以看到这个正则表达式正在使用

答复2 注意,我在上面的正则表达式中添加了单引号和双引号。如果只需要双引号,请使用以下正则表达式

({.*?}(?:==|>)(?:\d+|".*?"))
您可以看到这个正则表达式正在使用

解释 这些正则表达式的工作原理如下:

  • 匹配
    {
    ,后跟任意字符(除换行符外)任意次数,但尽可能少的匹配,后跟
    }
  • 匹配
    =
  • 将数字1匹配到无限次,或匹配带引号的字符串(任意字符任意次,但匹配次数尽可能少),例如
    “某物”
  • 正则表达式捕获整个部分,如果您查看regex101上的示例,您可以看到每个捕获组都匹配什么。如果捕获组不是预期用途,则可以将其删除


    预期结果 输入 请注意,以下两个字符串用于测试目的。一个字符串出现在问题中,另一个字符串出现在OP提供的链接中

    ({Renk}=="kirmizi"or{Renk}=="sari")or{Size}>32
    ({Color}=="red"|{Color}=="yellow")&{Size}>32
    
    输出 注意,下面提到的输出指定了匹配的内容/捕获组1(因为整个正则表达式都在一个捕获组中)。忽略任何其他组,因为它们对整个问题/答案不重要

    {Renk}=="kirmizi"
    {Renk}=="sari"
    {Size}>32
    
    {Color}=="red"
    {Color}=="yellow"
    {Size}>32
    

    我需要一个能打败谷歌的新搜索引擎,你能给我吗?所以这不是一个免费的编码服务,也不是一个教程网站。请尝试自己解决问题,当你在尝试不同的方法后陷入困境时,请继续发帖。谢谢
    ({.*?}(?:==|>)(?:\d+|)(([“]?).*?\2))
    ?我将之前的评论移到了一个答案上。@kadir950您应该在stackoverflow中发布所有相关代码,以备将来查看。例如,regex101出现故障(即资金不足),用户仍然可以看到您尝试的内容,并且可以在regex102上测试它链接到ReGEX101仍然是非常有益的,但它确实允许代码的备份。@ CTRAND您是对的,我考虑您的建议。谢谢。匹配<代码> {Rek==“SARI”)或{Sig}}。>32@sln哪一个?两者都有指向regex101的链接,并且都按照上面的说明执行。答案2正是我所需要的。我还更正了我问题中的错误。非常感谢@ctwheels提供的详细和有用的答案。@kadir950您应该使用以下正则表达式:
    (\w+(?:====|>)(?:\d+\。\d*。“*?”)
    。此正则表达式将捕获数字和小数(如果有)任何长度和有效格式。您的正则表达式将只捕获单个数字/十进制组合,例如
    3.2
    ,但它不会捕获
    10.2
    ,而是将捕获
    10
    ,因为您的十进制检查设置不正确。此外,正则表达式开头附近的点是无用的,因为您知道每个变量e name仅由
    \w
    字符组成。它后面的
    会引起问题。@老实说,用JavaScript很难做到这一点。与大多数语言相比,它在正则表达式方面有更多的限制。如果用PCRE正则表达式(即PHP)实现这一点,这将更容易实现。最好的办法是创建一个合适的解析器,并使用多个正则表达式来解析您要查找的信息。
    {Renk}=="kirmizi"
    {Renk}=="sari"
    {Size}>32
    
    {Color}=="red"
    {Color}=="yellow"
    {Size}>32