我有这样的正则表达式:
/^(?!((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?))/
当我输入:
www.test.com
- 它找不到任何东西(应该是)
当我输入:
aaaaa
- 它有效(这是真的)
但是为什么当我输入:
wwwww
- 我的正则表达式无效? (我的意思是它不匹配正则表达式)
我的正则表达式中我做错了什么?
答案 0 :(得分:0)
看起来您正在尝试构建URI正则表达式。我可以在这里链接一个足够好的版本(我不会使用这个版本,但它可能适合你):
/^(?:(\w[\w\d+.-]+):\/\/)?(?:(.+?):(.+)@)?(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|[^#:\/\?\s]+)(?::(\d+))?\/?(\/(?:[^#\/\?\s]+\/)*[^#\/\?\s]+\/?)?(?:\?((?:[^#=\/\s]+=[^&;#\/\s]+[&;]?)+))?(?:#(.+))?$/g
但我建议你看看这些 https://mathiasbynens.be/demo/url-regex
http://jmrware.com/articles/2009/uri_regexp/URI_regex.html
Regular expression to match generic URL
URI的官方标准是RFC-3986
否则,只需使用regexr.com调试正则表达式,然后使用regex101.com进行探索。
如上所述,你没有逃脱。之后www。你的正则表达式也是无限的,因为它可以匹配零个字符。你需要在最后放一个$来表示比赛结束。而且你正在将你的正则表达式转变为直接前瞻。
答案 1 :(得分:0)
我想你忘了逃避www
之后的那段时间。尝试将www.
替换为www\.
。