用于检查 url 格式的正则表达式

Regex for checking a url format

我需要一个正则表达式来检查字符串是否以“/message/posts”开头,下一个斜线和一些字符串是可选的,但下一个字符不应该是“?”。

例如:

/message/posts => true
/message/posts?a=b => false
/message/posts/lalala => true
/message/posts/lalala?n=v => false

我尝试了下一个代码,但我不知道下一步是什么:

^(\/message\/posts)(\/)?

应该这样做: ^\/message\/posts[^?]*$

RegEx101 demo

[^?] 表示 "Match anything but ?",* 表示 "do this 0 or more times",直到字符串锚 $.

结束

您不需要像您那样使用捕获括号,即使这通常不会造成任何危害。如果您想在不捕获的情况下对内容进行分组,请尝试 (?:stuff here) 而不是 (stuff here)。有关这方面的信息,请参阅 www.regular-expressions.info