我正在尝试构建正则表达式,将检查特定的路由,如果有"?emial=true"查询连接。只有在不存在"? email =true"在查询。我试图使用负向前看断言,但当我粘贴下面的例子和我的正则表达式到工具,如https://regexr.com/然后它仍然显示为匹配。不知怎么的,最后一个字符不计算在('x'在下面的例子中)。
((/some-path/some-path)(-*[da-zA-Z]*)*)(?!(?email=true))
/一些/some-path-1a-dwadsd-waeas-wasdx ?电子邮件= true
有人能帮我这个正则表达式吗?我觉得我很接近,但似乎无法弄清楚:)
已经有api来获取搜索参数,你不应该为它编写正则表达式。
let path = "/some-path/some-path-1a-dwadsd-waeas-wasdx?email=true"
let result = new URL(path,location).searchParams.get('email') == "true"
console.log(result)
您可以在正向前瞻性中捕获量化的部分,然后在消费模式部分中使用对组值的反向引用来避免回溯:
/some-path/some-path(?=([-da-zA-Z]*))1(?!?email=true)
^^^^^^^^^^^^^^^^^^^^
参见regex演示。