正则表达式匹配不包含斜杠的字符串
Regex to match string that does not contain slash
我正在尝试在网络应用程序中使用 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+)?$
如果你想匹配除 /
之外的任何字符,你可以使用 [^/]
^(?:[^/\s]+/)+[^/\s]+$
我正在尝试在网络应用程序中使用 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+)?$
如果你想匹配除 /
之外的任何字符,你可以使用 [^/]
^(?:[^/\s]+/)+[^/\s]+$