在javascript中使用通配符搜索文件名

在javascript中使用通配符搜索文件名,javascript,regex,Javascript,Regex,我正在使用通配符(*%)搜索文件名,即用户将键入表达式,脚本将对驻留在预定义目录中的文件名运行用户输入模式。我尝试使用javascript进行搜索,但遇到问题。我是javascript新手,所以不知道这是否是最好的方法。以下是我尝试的代码片段: <script> function checkPattern(str1) { var matchesFound = new Array(); for(var i=0; i<directory.length;i++) { var

我正在使用通配符(*%)搜索文件名,即用户将键入表达式,脚本将对驻留在预定义目录中的文件名运行用户输入模式。我尝试使用javascript进行搜索,但遇到问题。我是javascript新手,所以不知道这是否是最好的方法。以下是我尝试的代码片段:

<script>
function checkPattern(str1) 
{
var matchesFound = new Array();
for(var i=0; i<directory.length;i++)
{
    var newStr1 = directory[i];

    if(newStr1 == newStr1.match(str1))
        matchesFound.push(newStr);

}
//display items in matchesFound
}
</script>
</head>
<body>

<form>
<input name="testText" type="text" size=45>
<button onClick="checkPattern(testText.value);">Check pattern</button>

</form>
</body>

功能检查模式(str1)
{
var matchesFound=新数组();

对于(var i=0;i您需要将这些通配符转换为有效的正则表达式。现在您正在尝试匹配一个字符串和另一个字符串。

让我们使用SQL语法(
%
通配符)

要将这样的seach字符串转换为正则表达式模式,请使用如下内容»

RegExp.quote = function(str) {
  return (str+'').replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1');
};

var replaceCallback = function(match) { 
  return RegExp.quote(match);
}

regexPattern = searchString.replace(/[^%]+/g, replaceCallback).replace(/%/g, ".*"); 
测试它


然后你可以将这样的正则表达式模式与
RegExp
-read

更改
匹配项
匹配
是的,我更正了。仍然没有更改。你想匹配什么模式?你确定目录正常吗?你试过用firebug调试吗?是的,目录很好。我不知道我们如何调试using firebug。你是说创建一个新的RegExp对象吗?是的,但是你需要使*和%表示你认为它们的意思。是的,我想一个简单的开关盒就可以了。