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

时间:2014-05-31 12:42:55

标签: 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

2 个答案:

答案 0 :(得分:5)

RegExp。 exec()g(全局)修饰符一起用于循环内以获取所有匹配项。

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..
}

您也可以在此处使用字符串match()方法。

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

console.log(m); //=> [ ':b', ':d' ]

答案 1 :(得分:2)

var r = /:[a-z]+/g;  // i put the g tag here because it needs to match all occurrences
var s = '/a/:b/c/:d'; 
var m = s.match(r); 
console.log(m); //  [':b',':d']

我使用了匹配,因为它返回数组中的所有匹配项,与exec一样,您必须像其他示例一样循环。