Javascript 字符串比较中的星号通配符

Javascript 字符串比较中的星号通配符,javascript,jquery,regex,Javascript,Jquery,Regex,我想在javascript中使用星号通配符执行字符串匹配。如果用户输入vv*k,则: 维韦克应该匹配 可以有任意数量的星号。我实现了一个简单的例子,其中星号可以在开始、结束或中间位置 function matchString(pattern,columnValue) { if(pattern.indexOf('*')>-1){ if (pattern[0] == '*') { return columnValue.endsWi

我想在javascript中使用星号通配符执行字符串匹配。如果用户输入vv*k,则:

维韦克应该匹配

可以有任意数量的星号。我实现了一个简单的例子,其中星号可以在开始、结束或中间位置

function matchString(pattern,columnValue)
{
    if(pattern.indexOf('*')>-1){
        if (pattern[0] == '*')
        {
            return columnValue.endsWith(pattern.substr(1,pattern.length - 1)) ? true:false
        }
        else if (pattern[pattern.length - 1] == '*')
        {
            return columnValue.startsWith(pattern.substr(0,pattern.length  -1)) ? true:false
        }else{
           var stringArray =  pattern.split('*')
           return columnValue.startsWith(stringArray[0]) &&  columnValue.endsWith(stringArray[stringArray.length-1]) ? true:false
        }
    }else{
       return (columnValue.indexOf(pattern)>-1)
    }
    return false;
}
我想使用Regex实现它,以便在任何位置都可以使用任意数量的asterik。

如果您指的是viv*k->vivek,那么:-

function matchString(pattern,columnValue)
{
    if(pattern.indexOf('*')>-1){
        if (pattern[0] == '*')
        {
            return columnValue.endsWith(pattern.substr(1,pattern.length - 1)) ? true:false
        }
        else if (pattern[pattern.length - 1] == '*')
        {
            return columnValue.startsWith(pattern.substr(0,pattern.length  -1)) ? true:false
        }else{
           var stringArray =  pattern.split('*')
           return columnValue.startsWith(stringArray[0]) &&  columnValue.endsWith(stringArray[stringArray.length-1]) ? true:false
        }
    }else{
       return (columnValue.indexOf(pattern)>-1)
    }
    return false;
}
函数匹配StringPattern、columnValue{ var regex=new RegExp'^'+pattern.replace/\*/g'.{1}'+'$; 返回regex.testcolumnValue; }
警报'pattern=*oo*a*,value=foo-bar,match='+matchString'*oo*a*','foo-bar';vv*k->vivek应匹配。对吗?或者你是说viv*k?我想用Regex实现它,这样在任何位置都可以使用任意数量的asterik。如果你在这个过程中遇到了一个特定的问题,就发布一个关于这个问题的问题。这个问题太宽泛/模糊了。谢谢。但不是这样的。如果我说n*它匹配任何位置有“n”的字符串,但它应该只返回以n开头的字符串。我已经更新了答案