作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个带有 token 的 URL 解析器来过滤返回的结果,这些 token 是可选的,可以按任何顺序设置,我只需要在参数存在时获取它们。
我已经制作了一个可以获取 token 的正则表达式,但顺序很重要:
\/test(\/page\/[0-9]+)?(\/criticality\/[0-9]+)?(\/order\/[a-zA-Z0-9]+)?
你可以测试一下here
在此示例中,我将获得 /page/1
、/order/toto
和 /riticity/5
但未获得关键性.
如何以任意顺序获取任意代币?
最佳答案
您可以在模式开头使用正向先行获取它们,并捕获先行中的文本,但您将列出所有可能的值组合,这使得正则表达式解决方案看起来很难看:
^(?=.*\/test(\/page\/[0-9]+))(?=.*(\/criticality\/[0-9]+))(?=.*(\/order\/[a-zA-Z0-9]+))|^(?=.*\/test(\/page\/[0-9]+))(?=.*(\/order\/[a-zA-Z0-9]+))|^(?=.*\/test(\/page\/[0-9]+))(?=.*(\/criticality\/[0-9]+))|^(?=.*(\/criticality\/[0-9]+))(?=.*(\/order\/[a-zA-Z0-9]+))|^(?=.*(\/criticality\/[0-9]+))|^(?=.*(\/order\/[a-zA-Z0-9]+))|^(?=.*\/test(\/page\/[0-9]+))
参见demo
如您所见,正则表达式不可维护。您使用 /
分割输入字符串,然后检查数组是否包含您的键。如果是,您将获得该键后面的元素的值。
关于javascript - 正则表达式以任意顺序匹配可选标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31181405/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!