2012-04-26 3 views
1

今日は私たちのクライアントのいずれかがそれを訴えていたので

[a-zA-Z0-9]+[a-zA-Z0-9_\-\.] 

[a-zA-Z0-9]+[a-zA-Z0-9_\.\-] 

から我々のクライアントのウェブサイトに行く私たちのJavaスクリプトコードで正規表現を変更するために言って、私の上司からのメールを得ましたそれは正規表現のベストプラクティスではなく、CMSとそのDBに問題を引き起こしています。

2つの正規表現を見ると、まったく同じものにマッチするようです。

です。と - は最後に交換されますが、違いはありません。すべき?

何か不足していますか?

私たちのクライアント企業の開発者は、私たちがそれを変更することについて本当に頑張っています。

誰かが光を放つことはできますか?

ありがとうございます!

+1

@Mike:あなたが言ったことのほとんどは間違っています。あなたは\がエスケープ文字であるという事実を見逃しているようです。 –

+0

あなたは正しいです、何らかの理由でスラッシュがエスケープされたと思いました。 hah –

+0

実際には\ - と\。 2つの異なるものを完全に得る。 –

答えて

3

機能的な違いはありません。

正規表現に問題がある場合は、非標準/バグの実装です。問題の内容を正確に把握することをおすすめします。

私はそれを変更する理由はありませんが、私は理由を参照してくださいではないそれを変更するには、何をしたいですか。

ヒント:私は正規表現が間違って書かれていると思います。

[a-zA-Z0-9]+[_\.\-]? 
+1

私はあなたに同意します。それを変更。私は行って、彼らのためにそれを変更します。なぜ彼らはそれが「壊れたフォーマット」だと言っているのか不思議でした。私は彼らにメールを送って詳細を聞いた。私が答えを得たら、私は更新をします。 – KDV

2

文字グループに-を使用すると、最後にはA-Zのような文字の範囲を示します。もしあなたがそれをエスケープしているのなら、それはどこにでもある可能性があります。

CMSやその他のコードが正規表現のエスケープを解除する可能性があります。この場合、-がグループの最後の文字でない場合はエラーが発生します。できるだけ正規表現でエスケープ文字を少なくすると読みやすくなりますが、それは個人的な視点からです。

+1

すべての正規表現構文が文字クラス内のバックスラッシュエスケープをサポートするわけではないことに注意してください。この場合、どちらの形式も実際には正規文字としてバックスラッシュを含みます。 (しかし、ハイフン付きのものはどちらの側にもバックスラッシュがあり、 '[\ - \]'は '[\]'と同じですので、お互いに同等です) –

関連する問題