13

たとえば、文字列(メール、パスワードなど)をチェックする最良の方法を知りたいです。

/^...$/i.exec(a)

/^...$/i.test(a)
  • execは値を返します
  • テスト

テスト:

// 1° way
var mail = req.body.mail;
if(check(mail)){

実行:

// 1° way
var mail = req.body.mail;
if(check(mail)){

// 2° way
var mail = check(req.body.mail);
if(mail){

実行またはテスト?および何番目か (exec の場合は 1° または 2°)

解決

この場合はtestの方が適しています。

  • 確実に速くなります。

しかし、最も重要な

  • testはすべての作業を実行します。execは実行されませんでしたが、さらに実行できるため、実行する必要はありません。
  • Mattias Buelensが言ったように、 isMail() を使用すると、より論理的です: メールです: はいまたはいいえ. 一方、 exec : は電子メールです: 電子メールまたは null -> wtf ? 笑
4

1 に答える 1

19

入力文字列が正規表現と一致するかどうかのみをテストする必要がある場合は、RegExp.testが最適です。boolean条件に最適な戻り値を提供します。

RegExp.execすべてのキャプチャ グループと一致したインデックスを含む配列のような戻り値を返します。したがって、一致後にキャプチャされたグループまたはインデックスを操作する必要がある場合に役立ちます。(また、グローバル修飾子を使用する場合と比べて動作が少し異なります)String.match/g

最終的には、速度や効率はそれほど重要ではありません。正規表現は引き続き評価され、一致するすべてのグループとインデックスがグローバルRegExpオブジェクトを通じて利用可能になります (ただし、戻り値を使用することを強くお勧めします)。

テストに関してはif、それは個人的な好みの問題です。正規表現テストの結果を意味のある名前 ( などisEmail) の変数に割り当てると、読みやすさが向上する可能性がありますが、それ以外はどちらも問題ありません。

于 2012-06-12T21:21:26.303 に答える