正则表达式以变量开头的文件夹

时间:2013-01-19 08:35:24

标签: javascript regex

尝试查找以不区分大小写的变量开头的文件夹

var varname = ("BUI")
var stringMatch = "\\" + varname + "\\b";
if (FolderItems[i].name.match(stringMatch)) {
//do script
}

我发现Regex很混乱,我知道varname = \\\BUI\\\b,但是我需要找到一个以该变量开头的文件夹?我希望找到一个名为'Building_v02'

的文件夹

4 个答案:

答案 0 :(得分:0)

 if (FolderItems[i].name.match("^[BUI]")) {
  //do script
 }

^表示该字符串应以'BUI'开头

答案 1 :(得分:0)

JavaScript regexp syntax中,^是字符串开头的锚点。不区分大小写与i标志分开指示:

var varname = "BUI";
var re = new RegExp("^" + varname, "i");
if (re.test(FolderItems[i].name)) {
    // do script
}

但是,如果它可能包含任何不合需要的正则表达式元字符,则应escape the string

另请注意,您可能不必使用正则表达式:

var varname = "BUI".toLowerCase();
if (FolderItems[i].name.toLowerCase().indexOf(varname) === 0) {
    // do script
}

实际迭代项目数组:

for (var i = 0; i < FolderItems.length; i++) {
    // ...
}

答案 2 :(得分:0)

您可以轻松地在浏览器控制台中尝试。我会说当你匹配字符串的开头时,你最好使用substring

var matchFor = "BUI";
var folders = ["Building_v02","Building_v03", "unmatched"];
folders.filter(function(folder){
     return folder.substring(0,3).toLowerCase()===(matchFor.toLowerCase());
  }).forEach(function(value){
     console.log(value)
  });

除非您添加过滤器和forEach,否则这在旧版浏览器中无效,例如使用underscore.js

答案 3 :(得分:0)

var varname = "BUI";
var stringMatch = '^' + varname + '\\b';

if ( FolderItems[i].name.match( RegExp( stringMatch, 'i' ) ) {
    //do script
}

您可以像往常一样将字符串传递给match,但是如果传入一个RegExp对象,则可以提供第二个参数i,表示您需要不区分大小写的匹配

Regular Expressions MDN