1

今日、上司から、クライアントのWebサイトにアクセスするJavaスクリプトコードの正規表現を変更するようにというメールが届きました。

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

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

クライアントの1人が、正規表現のベストプラクティスではなく、CMSとDBに問題を引き起こしていると不満を言っていたためです。

これらの2つの正規表現を見ると、まったく同じものに一致しているように見えます。

。そして-は最後に交換されますが、それは違いを生むべきではありません。それが必要ですか?

私は何かが足りないのですか?

私たちのクライアントの会社の開発者は、私たちがそれを変更することに本当に固執しています。

誰かが光を当てることができますか?

ありがとう!

4

2 に答える 2

3

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

その正規表現に問題がある場合、それは非標準/バグのある実装です。問題が何であるかを正確に見つけることをお勧めします。

変更する理由はありませんが、変更しない理由もありませんので、お好きなようにしてください。

ヒント: 正規表現が間違っていると思います。それが何を意味するのかを知っていれば、私はそれを書きます:

[a-zA-Z0-9]+[_\.\-]?
于 2012-04-26T23:51:55.090 に答える
2

文字グループでaを使用する場合-は最後になります。それ以外の場合は、のように文字の範囲を示しますA-Z。あなたがそうであるようにあなたがそれを逃れているなら、それはどこにでもありえます。

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

于 2012-04-26T23:39:35.103 に答える