0

我有一个正则表达式,我想知道是否可以将所有匹配项用作函数的参数。例如,假设我有一个数据集

Hello heelo hhhheEEeloo eelloooo

和一个正则表达式

/[Hh]{1,}[Ee]{1,}[Ll]{1,}[Oo]{1,}/

这将匹配

Hello heelo hhhheEEeloo

例如,如何获得一个 javascript 函数以将每个匹配项作为参数

function isHello(arg) {
    if (arg == 'Hello') { return 1 }
    else { return 0}
}
4

3 回答 3

3

.replace与回调一起使用

"Hello heelo hhhheEEeloo eelloooo".replace(/[Hh]{1,}[Ee]{1,}[Ll]{1,}[Oo]{1,}/g,function(match){
    //Your function code here
    return match;
})

或者一个更简单的例子:

var count=0;
"aaaaaaa".replace(/a/g,function(match){
    console.log("I matched another 'a'",count++);
    // just to not replace anything, technically this doesn't matter 
    //since it doesn't operate on the actual string
    return match; 
});

小提琴

于 2013-06-26T16:57:11.810 回答
1
var string = "Hello heelo hhhheEEeloo eelloooo",
    regex = /[Hh]{1,}[Ee]{1,}[Ll]{1,}[Oo]{1,}/g,
    fn = function(arg){ 
        if (arg == 'Hello')
             return 1;
        return 0
    };
string.match(regex).forEach(fn);

注意g添加到正则表达式以匹配的标志,以便提供所需的匹配。

于 2013-06-26T16:59:49.883 回答
1

这是一个使用示例match()

var s = "Hello heelo hhhheEEeloo eelloooo";

s.match(/[Hh]{1,}[Ee]{1,}[Ll]{1,}[Oo]{1,}/g).forEach(function(entry) {
    // your function code here, the following is just an example
    if (entry === "Hello")
        console.log("Found Hello!");
    else
        console.log(entry + " is not Hello");
    return;
});

示例:http: //jsfiddle.net/wTMuF/

于 2013-06-26T17:02:39.637 回答