ユーザーが生成した正規表現を実行する関数があります。ただし、ユーザーが実行されない正規表現を入力すると、停止してフォールオーバーします。行を Try/Catch ブロックでラップしようとしましたが、残念ながら何も起こりません。
それが役立つ場合、私はjQueryを実行していますが、それよりも少し基本的であると推測しているため、以下のコードにはjQueryがありません。
編集:はい、「[」をエスケープしていないことはわかっています。これは意図的なものであり、質問のポイントです。私はユーザー入力を受け入れており、アプリケーションが顔を平らにすることなく、この種の問題をキャッチする方法を見つけたいと考えています。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Regex</title>
<script type="text/javascript" charset="utf-8">
var grep = new RegExp('gr[');
try
{
var results = grep.exec('bob went to town');
}
catch (e)
{
//Do nothing?
}
alert('If you can see this then the script kept going');
</script>
</head>
<body>
</body>
</html>