尝试匹配URL时出现Javascript正则表达式语法错误,导致意外标记^

尝试匹配URL时出现Javascript正则表达式语法错误,导致意外标记^,javascript,regex,node.js,Javascript,Regex,Node.js,我试图在Javascript的URL中捕获/之间的文本。在Regex测试仪中,我可以使用 [^/]* 当经过的时候 /foo/bar/ 它返回foo和bar作为匹配项(这是我想要的)。在我的javascript(node.js?)中,我试图将这个正则表达式用作 var match = req.url.match ([^/]*); 但是我得到了错误 SyntaxError: Unexpected token ^ 如何在Javascript中捕获此正则表达式?您需要正则表达式文本的分隔符,还

我试图在Javascript的URL中捕获
/
之间的文本。在Regex测试仪中,我可以使用

[^/]*
当经过的时候

/foo/bar/
它返回
foo
bar
作为匹配项(这是我想要的)。在我的javascript(node.js?)中,我试图将这个正则表达式用作

var match = req.url.match ([^/]*);
但是我得到了错误

SyntaxError: Unexpected token ^

如何在Javascript中捕获此正则表达式?

您需要正则表达式文本的分隔符,还需要使用
g
(全局)修饰符:

var match = req.url.match(/[^/]+/g);

*
更改为
+
,以避免匹配空字符串。

您需要为正则表达式文本使用分隔符,还需要使用
g
(全局)修饰符:

var match = req.url.match(/[^/]+/g);

*
更改为
+
,以避免匹配空字符串。

您忘记了构成正则表达式文本的斜杠:

var match = req.url.match(/[^\/]*/g);

请注意,您需要在正则表达式中转义斜杠

您忘记了构成正则表达式文字的斜杠:

var match = req.url.match(/[^\/]*/g);

请注意,您需要在正则表达式中转义斜杠

最好使用
split
我认为:

'/foo/bar/'.split('/').filter(Boolean)
//=> ["foo", "bar"]
要获取第一个元素:

'/foo/bar/'.split('/').filter(Boolean)[0]
//=> "foo"

最好使用
split
我认为:

'/foo/bar/'.split('/').filter(Boolean)
//=> ["foo", "bar"]
要获取第一个元素:

'/foo/bar/'.split('/').filter(Boolean)[0]
//=> "foo"

没有那么好,但是感谢
.filter(Boolean)
的建议-这真的很好one@alex:从避免使用regex的意义上说更好。这并不是更好,但是感谢
.filter(Boolean)
的建议-这真的很好one@alex:在避免使用正则表达式的意义上更好。