我有一个类似"users/123/edit"的URL片段,我想匹配字符串的第一部分(在本例中为"users"(。URL片段也可以只是"users",并且还应该匹配"users(用户("。
我可以通过JSfind((和substr((实现,但我想看看如何通过正则表达式来实现。对解决方案的解释也很好。
Regex:/([a-z0-9]+)(/[a-z0-9]+)*/i
匹配:
-
users/123/edit
-
users
-
myuser123
//如果不需要,则告知
解释:
([a-z0-9]+)
捕获[a-z0-9]
的一个或多个出现(+
(并捕获它
(/[a-z0-9]+)*
捕获/
的零次或多次出现(*
(,然后是[a-z0-9]
,并捕获最后一次出现。
i
gnore大小写标志使整个匹配不区分大小写。
DEMO
使用正则表达式:
str.match(/[^/]*/i)[0]
这匹配所有不同于(之前("/"的字符
FIDDLE
您可以使用split('/')[0]
:
s = 'users/123/edit'.split('/')[0];
// users
否则:
s = 'users'.split('/')[0];
// users