【问题标题】:search file names using wildcards in javascript在 javascript 中使用通配符搜索文件名
【发布时间】:2012-11-28 21:15:54
【问题描述】:

我正在使用通配符 (* %.) 搜索文件名,即用户将输入表达式,脚本将对驻留在预定义目录中的文件名运行用户输入模式。我尝试在 javascript 中执行此操作,但面临问题。我是javascript新手,所以不知道这是否是最好的方法。这是我尝试的代码的 sn-p:

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

【问题讨论】:

  • matches 更改为match
  • 是的,我更正了。仍然没有变化。
  • 你想匹配什么模式?你确定目录没问题?你试过用 firebug 调试吗?
  • 是的,目录没问题。我不知道我们如何使用 firebug 进行调试。

标签: javascript regex


【解决方案1】:

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

要将这样的搜索字符串转换为正则表达式模式,请使用类似这样的东西 »

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

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

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

测试它here

然后您可以将这种正则表达式模式与RegExp 一起使用 - 阅读this

【讨论】:

    【解决方案2】:

    您需要将这些通配符转换为有效的正则表达式。现在你正在尝试匹配一个字符串和另一个字符串。

    【讨论】:

    • 你的意思是创建一个新的 RegExp 对象?
    • 是的,但是您需要使 * 和 % 表示您认为的意思。
    • 是的,我想一个简单的开关盒就可以了。
    猜你喜欢
    • 2019-05-10
    • 2014-12-09
    • 1970-01-01
    • 2011-03-21
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多