尝试查找以不区分大小写的变量开头的文件夹
var varname = ("BUI")
var stringMatch = "\\" + varname + "\\b";
if (FolderItems[i].name.match(stringMatch)) {
//do script
}
我发现Regex很混乱,我知道varname = \\\BUI\\\b
,但是我需要找到一个以该变量开头的文件夹?我希望找到一个名为'Building_v02'
答案 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
,表示您需要不区分大小写的匹配