检查重复单词模式的Javascript正则表达式

检查重复单词模式的Javascript正则表达式,javascript,regex,Javascript,Regex,如何解析字符串不检查它是否处于有效模式 我需要找到那些词和或 我需要检查它们是否被另一个词包围,但不是AND或or 如果它是有效的,我将构建查询 示例: a and b or c -> valid a and or b -> invalid a or and b -> invalid a or b -> valid a and b or -> invalid and b or c -> invalid 您可以使用非正则表达式解决方

如何解析字符串不检查它是否处于有效模式

  • 我需要找到那些词和或
  • 我需要检查它们是否被另一个词包围,但不是AND或or
  • 如果它是有效的,我将构建查询

    示例:

    a and b or c -> valid
    a and or b   -> invalid
    a or and b   -> invalid
    a or b       -> valid
    a and b or   -> invalid
    and b or c   -> invalid
    

    您可以使用非正则表达式解决方案吗

    试试这个

    函数有效(str)
    {
    返回str.split(/\s*和\s*|\s*或\s*/g).过滤器(函数(项){
    返回项。长度==0;
    }).长度==0;
    }
    console.log(isValid(“a和b或c”);
    console.log(isValid(“a和或b”);
    console.log(isValid(“a或b”));
    console.log(isValid(“a或b”);
    console.log(isValid(“a和b或”));
    console.log(isValid(“和b或c”);
    console.log(isValid(“a和bc”)尝试此正则表达式:

    ^(?=.*(?:and|or).*$)(?!(?:"\s*")*\s*(?:and|or))(?!.*(?:and|or)\s*(?:"\s*")*$)(?!.*and\s+or)(?!.*or\s+and).*$
    

    说明:

    • ^
      -字符串的开头
    • (?!\s*(?:和|或))
      -负前瞻-确保
      不出现在前面有0+空格的字符串开头
    • (?!*(:和|或)\s*$)
      -负向前看-确保
      不出现在字符串末尾,后面跟0+空格
    • (?!.*和\s+或)
      -确保
      不会紧跟在
      以及1+空格之后
    • (?!*或\s+和)
      -确保在
      和1+空格后不紧跟“和”
    • .+-匹配除新行字符以外的任何字符
    • $
      -字符串结尾
    更新:


    “我需要X”不是问题。你有什么问题?错了,因为第二个应该是有效的。它将从“a”和“bc”生成查询是的,现在看起来不错。如果有效,我只需要将所有字符串按“”拆分,我将有所有部分用于查询。同样的问题,“a”或“1”也有效,这是错误的。@user3462947您需要添加所有可能的有效和无效字符串示例,或者指定有效/无效的规则。为什么它与regex101中的所有行匹配?请再次检查。它只匹配有效的匹配项。没有,还是一样。完全匹配70-91
    a或b->valid
    你检查我添加的链接了吗?我还在答案中添加了截图。