检查重复单词模式的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 您可以使用非正则表达式解决方
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-91a或b->valid
你检查我添加的链接了吗?我还在答案中添加了截图。