简单的正则表达式/:[az] + /在javascript中没有按预期工作

kap*_*v89 3 javascript regex

下面是一个非常简单的正则表达式代码,它在php和ruby中正常工作,但在JS中没有.请求帮助我让它工作:

var r = /:[a-z]+/
var s = '/a/:b/c/:d'
var m = r.exec(s)

// now m is [":b"]
// it should be [":b", ":d"]
// because that's what i get in ruby and php
Run Code Online (Sandbox Code Playgroud)

hwn*_*wnd 5

使用RegExp.exec()with g(global)modifier用于在循环内部获取所有匹配项.

var str = '/a/:b/c/:d'
var re  = /:[a-z]+/g
var matches;

while (matches = re.exec(str)) {
   // In array form, match is now your next match..
}
Run Code Online (Sandbox Code Playgroud)

您也可以使用String.match()方法在这里.

var s = '/a/:b/c/:d',
    m = s.match(/:[a-z]+/g);

console.log(m); //=> [ ':b', ':d' ]
Run Code Online (Sandbox Code Playgroud)