【发布时间】:2019-09-21 07:22:40
【问题描述】:
我知道很多人都问过这个问题,但没有解决我的问题
我有一个 odata 查询
/items?$filter=name eq 'CARPET T!@#&$%^&*()_+-=~<>?,./:";'[]\{}| APE&1-13/32"X42'' or name eq 'Twitter' and subscribers gt '30'&$top=1
我得到了一个解决方案,但它在最后一个值中添加了下一个参数
(?<Filter>(?<Resource>.+?)\s(?
<Operator>eq|ne|gt|ge|lt|le|add|sub|mul|div|mod|)\s'?(?<Value>.+?)'?)
(?:\s*$|\s+(?:or|and|not))
最后:
**Resource -> subscribers
Operator -> ge
Value -> '30' BUT it give '30'&$top=1**
【问题讨论】:
-
它是哪种语言:JavaScript、Java 还是 C#?
-
不知道 odata,但这似乎是一个无效的查询。似乎字符串文字是单引号的,但以
CARPET开头的文字包含'和&字符,我可以看到没有任何类型的转义,那么查询解析器如何知道文字结束的位置?跨度> -
当查询显示
subscribers gt '30'时,为什么结果会显示Operator -> ge?ge和gt不是同一个运算符。
标签: javascript java c# regex