我需要匹配一个字符串与字母数字,下划线和破折号后,只有一个或零正斜杠。
这些都是有效的:
aBc ab-9/ a_C-c/ 3-b-c
这些都是无效的:
aBc/xyz 1bc/x7z/ hello// a-b_/89u/13P
我正在尝试这样做:
([a-zA-Z0-9-_]{1,})(?=\\?)
但这是行不通的。它仍然是匹配的,例如:a-b_/89u/
a-b_/89u/
请帮帮忙
发布于 2022-09-11 17:28:26
使用像(?=\\?)这样的模式,由于问号使它是可选的,所以肯定的查找将始终为真,因此它将匹配更多的[a-zA-Z0-9-_]事件之一。
(?=\\?)
[a-zA-Z0-9-_]
在这种情况下,您可以使用捕获组作为您想要的部分,并且可以选择在字符串的末尾匹配/。
/
如果不想在末尾匹配双连字符和可选的/:
^(\w+(?:-\w+)*)\/?$
Regex演示
放眼看:
^\w+(?:-\w+)*(?=\/?$)
或者,如果您希望允许混合字符,您可以将其写成:
^[\w+-]+(?=\/?$)
https://stackoverflow.com/questions/73675960
相似问题