首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在javascript中从正则表达式匹配项中调用函数

如何在javascript中从正则表达式匹配项中调用函数
EN

Stack Overflow用户
提问于 2013-06-27 00:55:50
回答 3查看 49关注 0票数 0

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

代码语言:javascript
复制
Hello heelo hhhheEEeloo eelloooo

和正则表达式

代码语言:javascript
复制
/[Hh]{1,}[Ee]{1,}[Ll]{1,}[Oo]{1,}/

哪一个匹配

代码语言:javascript
复制
Hello heelo hhhheEEeloo

例如,如何让javascript函数在每个匹配项中作为参数

代码语言:javascript
复制
function isHello(arg) {
    if (arg == 'Hello') { return 1 }
    else { return 0}
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-27 00:57:12

使用带有回调的.replace

代码语言:javascript
复制
"Hello heelo hhhheEEeloo eelloooo".replace(/[Hh]{1,}[Ee]{1,}[Ll]{1,}[Oo]{1,}/g,function(match){
    //Your function code here
    return match;
})

或者一个更微不足道的例子:

代码语言:javascript
复制
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; 
});

Fiddle

票数 3
EN

Stack Overflow用户

发布于 2013-06-27 00:59:50

代码语言:javascript
复制
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标志以进行匹配。

票数 1
EN

Stack Overflow用户

发布于 2013-06-27 01:02:40

下面是一个使用match()的示例

代码语言:javascript
复制
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/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17326102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档