首页 > 解决方案 > 重复时,正则表达式规则段未按预期工作

问题描述

我正在使用 JavaScript 正则表达式来检查有效的 url 格式。我当前的迭代是:

^(?!([^\?\s]*\?[^\?\s]*?as_asd=[^\?\s]*-_-[^\?\s]*-_-[^\?\s]*(-_-)?[^\?\s]*)).*$

使用测试字符串:

https://www.asdf.com/?as_asd=asdf-_-asdf-_-asdf-_-asdf

我将所有内容都包装在一个负前瞻中以防止匹配,除非 url 破坏了格式。一切都按预期工作,直到第二次之后-_-。我的期望是[^\?\s]*应该防止输入空格字符或问号而不触发匹配,但是在第二个-_-或可选字符之后添加(-_-)?不会触发匹配。

我已经在几个正则表达式调试器上检查了这一点,但仍然无法弄清楚。我有什么误解?谢谢!

标签: javascriptregex

解决方案


推荐阅读