Mat*_*ira 5 javascript regex url
我想从 URL 中提取路径,并且我想使用正则表达式。
我正在使用这个正则表达式:
^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\n\?\=?\#]+)
和一个副作用,最后一个/被捕获。
例如——
domain.com/home/ = domain.com/home/
domain.com/home?param=value = domain.com/home
Run Code Online (Sandbox Code Playgroud)
如何验证特定捕获组的最后一个字符不是/?
注意- 我知道我可以用另一个正则表达式匹配来解决这个问题,但我认为它可以用一个来完成。
一种方法是将 the 添加/到否定字符类以不匹配它,并且仅在其后跟除/空白字符或空白字符之外的任何字符时才匹配它。
^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?((?:[^:\n?=?#\/]+|\/(?=[^\s\/])[^:\n?=?#\/]*)*)
Run Code Online (Sandbox Code Playgroud)
最后一部分将匹配
(捕获组 1
(?: 非捕获组
[^:\n?=?#\/]+ 匹配除列出的任何字符,包括 /| 或者\/(?=[^\s\/])/直接后跟除 then/或空白字符以外的任何字符时匹配[^:\n?=?#\/]* 匹配除所列之外的可选字符)* 关闭非捕获组并重复 0+ 次以匹配多个 /) 关闭第 1 组您可以使最后一场比赛成为非贪婪的,后跟可选的/. 然后确保后面有?or 结尾:
^(?:https?:\\/\\/)?(?:[^@\\n]+@)?(?:www\\.)?([^:\\n?=\xd6\xbf#]+?)\\/?(?=\\?|$)\nRun Code Online (Sandbox Code Playgroud)\n\n你的组 #1 将在最后一个位置之前停止一个位置,/假设 URL 以此结尾或者之后有一个查询字符串。
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |