2016-12-22 20 views
1

今日は本当に奇妙な問題を思いつきました。私はLaravelでFirebirdデータベースの下にアプリケーションを作成していますので、不正な文字列や文字をクエリに挿入しないことが非常に重要です。昨日私はこの種の例外に関するエラー報告を受け取りましたので、問題の可能性があるコードを確認しました。今、私は、次の正規表現で検証ルールを作成:Ôûîâのような特殊文字を置換する

regex:/[a-zA-Z0-9\.\-\,üÜóÓöőŐúÚűŰáÁiÍûé]+/ 

をそれは実際に素晴らしい作品が、私は、ユーザーの場合、これらのようなcharachtersを挿入していることに気づい:

Ôûîâ 

それは例外がスローされます上記。 TextAnguarを使用しているテキストエディタの場合、これらの種類の入力を保存したり、標準文字に置き換えたりすることはできません。 (üöőúのように、ハンガリー語の手紙)

ありがとうございました!

幸運を祈り、 ガーボルマジャール

あなたは文字クラスに文字クラスの開始(または終了)で -をする必要がないことを

regex:/[-a-zA-Z0-9.,üÜóÓöőŐúÚűŰáÁiÍûéÔûîâ]+/ 
            ^^^^ 

注これらの文字を追加することがあり

+1

'regex:/ [a-zA-Z0-9 \。\ - \、üÜóÓöőŐúÚöóÓòòúúúú] +/i'(あるいは' regex:/ [ - a-z0-9。 、úóööúűáièéÔûîâ] +/i')。 –

+0

Wiktorありがとう、これは解決策でした! – Gabesz

答えて

1

リテラルハイフンを示すためにエスケープされています。 ,.は、文字クラス内でエスケープする必要はありません。

+1

アクセント付き文字を文字クラスで使用する場合は、u修飾子を使用する必要があります。それ以外の場合、i修飾子はアクセント付き文字(1バイトと見なされるため)では機能しません。 'ż'や'Ŷ'のようなパターン –

関連する問題