2016-04-22 3 views
0

/だから私は、ユーザーの入力などによって文字や数字のみを許可するようにJavaでこの正規表現を使用しますトリックを行いnull文字が正規表現を越える可能性がありますか?

if (!string.matches("[a-zA-Z0-9]*")) { 
    //Not allowed 
} 

、私はすでにこの要素が存在するかどうかを確認ので、それはだかどうかを確認する必要はありません空の。ちょうど0またはそれ以上の一致した文字。

このチェックを行った後、ユーザー入力はXMLファイルに格納されます。

(0x0) special characters are not allowed

だから私はちょうど好奇心が強い、それはこのタイプをバイパスすることが可能である:どういうわけか、ユーザーは、私はこのエラーを取得するファイルを読み込もうとしたときように、この正規表現過去のNULL文字を取得することができました正規表現の?あるいはこれは間違いなく他の何かによって引き起こされたのでしょうか?現在、これは最も可能性の高い原因と思われますが、正規表現を正しく使用しているかどうかはわかりません。

+1

私は "[a-zA-Z0-9] *"は "[a-zA-Z0-9] +"でなければならないと "*"量子はゼロとinfinte文字の間に許されます。 –

+0

True! @lbarros 'String string =" ";' – soufrk

答えて

1

*数値限定子は、必要に応じてゼロと無制限の回数を可能な限り何度も一致させます。だから空の文字列はあなたの正規表現を通ることができます。

例:https://regex101.com/r/jZ2hI7/1

1

変更[a-zA-Z0-9]* [a-zA-Z0-9]+に(それが空のテキストで1試合を与えていることに注意してください)。 アスタリスク( "*")はゼロ文字を許可します。

関連する問題