正则表达式匹配不包含斜杠的字符串



我试图在使用regex匹配模式的web应用程序中使用vue-router设置路由。我要匹配的模式是包含没有斜杠的字母数字字符(和下划线)的任何字符串。以下是一些示例(第一个斜杠只是显示域名后的字符串,例如example.com/):

)
/codestack
/demo45
/i_am_long

应该而不是的字符串匹配将是:

/data/files.xml
/share/home.html
/demo45/photos

到目前为止我想到的唯一正则表达式是:

path: '/:Username([a-zA-Z0-9]+)'

这是不完全正确的,因为它匹配除了斜杠以外的所有字符。而我只想在遇到第一个正斜杠之前匹配第一组字母数字字符(包括下划线)。

如果路由包含一个正斜杠,例如/data/files.xml,那么它应该是一个不同的正则表达式路由匹配。因此,我需要一个正则表达式模式来匹配上面包含斜杠的示例。理论上,它们可以包含任意数量的斜杠,例如/demo45/photos/holiday/2015/bahamas

对于第一部分,您可以匹配1个或多个单词字符,这些字符也将匹配下划线。

^$断言字符串的开始和结束。

^w+$

对于第二个,您可以从单词字符开始匹配,后跟/

如果有更多的正斜杠,你可以选择在一个组中重复第一个模式。

模式后的最后一部分可以是1个或多个单词字符,可选部分匹配点和单词字符。

^w+/(?:w+/)*w+(?:.w+)?$

Regex演示

如果你想匹配除/以外的任何字符,你可以使用[^/]

^(?:[^/s]+/)+[^/s]+$

Regex演示

最新更新