0

大文字と小文字を区別しない変数で始まるフォルダーを見つけようとしています

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

正規表現はかなり紛らわしいと思いvarname = \\\BUI\\\bますが、その変数で始まるフォルダーを見つけるには何が必要ですか? というフォルダを見つけてほしい'Building_v02'

4

4 に答える 4

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)
  });

たとえばunderscore.jsを使用してフィルターと forEach を追加しない限り、これは古いブラウザーでは機能しません。

于 2013-01-19T08:56:32.667 に答える
0
 if (FolderItems[i].name.match("^[BUI]")) {
  //do script
 }

^ 文字列が「BUI」で始まることを意味します

于 2013-01-19T08:43:31.340 に答える
0

JavaScript 正規表現構文では、^文字列の開始のアンカーです。大文字と小文字を区別しないことは、次のiフラグで個別に示されます。

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

ただし、文字列に望ましくない正規表現のメタ文字が含まれている可能性がある場合は、文字列をエスケープする必要があります。

また、正規表現を使用する必要がない場合があることに注意してください。

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

アイテムの配列を実際に反復処理するには:

for (var i = 0; i < FolderItems.length; i++) {
    // ...
}
于 2013-01-19T08:50:11.030 に答える
0
var varname = "BUI";
var stringMatch = '^' + varname + '\\b';

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

に文字列を渡すこともできmatchますが、RegExp オブジェクトを渡す場合は、2 番目の引数iを指定できます。これは、大文字と小文字を区別しない一致が必要であることを示します。

正規表現 MDN

于 2013-01-19T09:52:32.233 に答える