1

localStorageに保存されているアイテムの「パス名」を確認する必要があります(パス名は次のstringようなものです:abc/localstorage/ualldocs/aalldocslocalstorageにあるものをフィルタリングするために。

今私はこれを試しています:

priv.localpath = "abc/localstorage/ualldocs/aalldocs";

for (i in localStorage) {
  if (localStorage.hasOwnProperty(i)) {
    s = new RegExp('\\/' + priv.localpath + '\\/.*$');
    if (s.test(i)) {
      value = localStorage.getItem(i);
      console.log( value );
    } else {
      console.log( "not found: "+i);
    }
  }
}

動作しない=何も見つかりません。

質問:
変数名の後に任意の文字が続く文字列の正規表現を作成するにはどうすればよいですか?

4

2 に答える 2

3

しかし、答えは同じです。

コンストラクターを使用すると、RegExpでこれが可能になります

    priv.localpath = "abc/localstorage/ualldocs/aalldocs";

for (i in localStorage) {
  if (localStorage.hasOwnProperty(i)) {
    s = new RegExp(priv.localpath + '\\/*$', "i")
    if (s.test(i)) {
      value = localStorage.getItem(i);
      console.log( value );
    } else {
      console.log( "not found: "+i);
    }
  }
}
于 2013-01-28T14:15:19.337 に答える
1

ループ内の正規表現は常に同じであり、次の new RegExp("\\/abc/localstorage/ualldocs/aalldocs\\/*$") ように変換されます。 \/abc/localstorage/ualldocs/aalldocs\/*$

私は本当に理解していません:

  1. ループ内で同じ正規表現を再生成する理由。
  2. あなたが達成しようとしていること。

しかし、あなたの質問に答える:

var someString = "something"
var myRegex = new RegExp(someString + '.*'); // creates a regex for the string made up of a variable 'someString' followed by any character: '.*'
于 2013-01-28T14:33:10.917 に答える