gpt4 book ai didi

javascript - 浏览器对具有前瞻性的正则表达式的不同解释

转载 作者:行者123 更新时间:2023-11-29 22:39:52 24 4
gpt4 key购买 nike

我正在使用 /\s+(AND|OR)(?=\s+")\s+/ 在 javascript 中运行拆分

"email" IS NOT NULL AND "email" LIKE '%gmail.com' OR "email" = 'test@test.com'

现在,根据我对正则表达式的理解,我期望获得以下数组:

[0]: "email" IS NOT NULL
[1]: "email" LIKE '%gmail.com'
[2]: "email" = 'test@test.com'

注意:为了清楚起见,我去掉了分隔符。

但是,我得到

[0]: "email" IS NOT NULL
[1]: AND
[2]: "email" LIKE '%gmail.com'
[3]: OR
[4]: "email" = 'test@test.com'

在 OS X 10.6.4 上的 Firefox 3.6.8、Chrome 5.0.375.126 和 Safari 5.0.1 上运行时。

但是,当我尝试使用默认设置的最新 IE8 8.0.6 时,我得到了我最初期望的结果。带有 preg_split 的 PHP 5.2.10 也以这种方式拆分它。

我的猜测是,这一次“好”的浏览器弄错了,但我想听听更多的意见。

编辑:我在这里给出的电子邮件示例是一个简单的示例。基本上我不知道每个成员可以是什么。 "xyz"= '1' AND "zyx"= 'test AND toast' 是另一个可能的输入字符串。

我所知道的结构是整个字符串将具有以下模式:

"<attribute>" <operator> '<value>'( (AND|OR) "<attribute>" <operator> '<value>')*

注意:空格实际上代表\s+

最佳答案

尝试在 /\b(?:AND|OR)\b/ 上拆分,并 trim 生成的部分。

请注意, bool 运算符具有优先级规则,您不能在 ANDOR 上拆分而不丢失意义。此外, bool 表达式可以(理论上)括在嵌套括号中,这基本上排除了正则表达式作为解析它们的技术。

关于javascript - 浏览器对具有前瞻性的正则表达式的不同解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3475267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com