具有不同值的 JavaScript/Regex 参数
JavaScript/Regex params with different values
老实说,当涉及到更高级或更长的正则表达式时,我有点迷茫。我有一个查询字符串,我需要匹配并获取查询参数的值和名称。对我来说,困难在于该值可以是不同的值,目前只有 4 个不同的查询参数。下面是一个示例查询字符串:
foo title:"Foo Bar" -title:other author: (mitchell* OR mike) from:2012-01-01 to: 2012-06-01
查询参数包括标题、作者、发件人和收件人。这三个不同的值在双引号"Foo Bar"内,用括号(米切尔*或迈克)或单个值2012-01-01或其他值括起来。请注意,冒号后面还有一个可选空格。在每个参数名称之前也可以有一个 + 或 - -title。标题和作者值可以具有通配符。
我目前对解析值不感兴趣,就像我不需要解析(mitchell* 或 mike)来知道其中的内容一样,只想将其作为一个整体显示。
我如何使用正则表达式解析此字符串以获取与之相关的参数名称的值?
我可以处理这样的结果:
['title:"Foo Bar"', '-title:other', 'author: (mitchell* OR mike)', 'from:2012-01-01', 'to:2012-06-01']
我不需要担心没有参数名称的值,例如开头的foo(可以在字符串中的任何位置),只需要获取参数名称和值。
约瑟夫是对的。您提供的数据非常混乱,将其放在一个正则表达式中太复杂了,IMO,我能想到的最好方法是应用 3 种不同的表达式,每种类型对应一个您要搜索的类型:
这将搜索以左括号开头的项目:
-?'w+:'s*'((.*?)')
这将搜索以双引号开头的项目:
-?'w+:'s*"(.*?)"
这将搜索其他项目(带空格的项目不起作用):
-?'w+:'s*([^'s"'(]+)
也许,有一种更简单的方法可以做到这一点,但这是我会这样做的方法。
这个正则表达式做了我想要的:
/-?'w+:'s*([^'s"'(]+|"(.*?)"|'((.*?)'))/g
返回:
["title:"Foo Bar"", "-title:other", "author: (mitchell* OR mike)", "from:2012-01-01", "to: 2012-06-01"]
如我所愿!
相关文章:
- Javascript RegEx validator
- 包含圆括号的JavaScript Regex模式
- 要替换的Javascript Regex无法按预期工作
- Javascript/RegEx未验证HTML表单
- Isn't javascript regex lazy?
- javascript/regex忽略双引号中的分号
- 从javascript regex.exec分配多个变量
- JavaScript Regex 将单词替换为其第一个字母,除非在括号内
- JavaScript Regex(?i)选项中字符串大小写不敏感的部分不起作用
- JavaScript Regex,用于由特定字符串包围的数字和空格
- Javascript RegEx to XML Schema RegEx
- Javascript Regex Search
- Javascript Regex,在字符串中查找数字
- Javascript Regex选择每个非字母数字字符和空白
- Javascript Regex-删除未捕获的组
- Javascript-Regex,用于逗号分隔的字母数字
- Javascript Regex-从价格中抓取分隔符
- JavaScript:RegEx-不返回match1 match2等
- 将Javascript Regex结果转换为字符串(?)
- Javascript Regex替换HTML标记