【发布时间】:2010-08-13 08:48:37
【问题描述】:
我正在使用/\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'
在 Firefox 3.6.8、Chrome 5.0.375.126 和 OS X 10.6.4 上的 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+
【问题讨论】:
-
只匹配 AND 和 OR 正是我需要它做的,因为我正在分裂这个。您提供的链接完全显示了我期望的结果。顺便说一句,不错的网站,我不知道。
-
对不起,我删除了我的评论。我已经监督你想要分裂
标签: javascript regex split lookahead