1

エラーメッセージに正規表現を使いたい...

try {
  throw new Error("Foo 'bar'");
} catch (err) {
  console.log(getInQuotes(err));
}

... getInQuotes は文字列の関数です:

var getInQuotes = function(str) {
  var re;
  re = /'([^']+)'/g;
  return str.match(re);
};

...しかし、エラーが発生しました:

Object Error: Foo 'bar' has no method 'match'

通常の文字列でも機能しますが:

console.log(getInQuotes("Hello 'world'"));

結果:

[ '\'world\'' ]

エラーオブジェクトを文字列化しようとしました...

console.log("stringify: " + JSON.stringify(err));

...しかし、それは空です:

stringify: {}
4

4 に答える 4

1

Error オブジェクトを作成しましたが、これは文字列ではありません。toStringしかし、そのメソッドを呼び出し、その結果に match を適用することで、これを簡単に解決できます。

function getInQuotes(err) {
  var re;
  re = /'([^']+)'/g;
  return err.toString().match(re);
};
于 2013-06-28T11:50:01.167 に答える
0

errは文字列ではなくErrorオブジェクトなので、.match()機能はありません。Errorこの方法で、オブジェクトのtoString()メソッドを使用して関数を呼び出す必要があります。

try {
    throw new Error("Foo 'bar'");
} 
catch (err) {
    console.log(getInQuotes(err.toString())); 
}
于 2013-06-28T11:51:01.087 に答える