2017-11-10 2 views
0

ユーザ入力が指定されたリストに特殊文字を含むかどうかを確認するために使用できる正規表現を探しています。ここで 特殊文字をフィルタリングするための正規表現

は私が書くしようとした正規表現を使用することによって許可されていない特殊文字は以下のとおりです。 ^[`[email protected]#$%^&*()_+={}\[\]|\\:;“’<,>.?๐฿]*$

iはhttps://regex101.com/に行って、私が一致するには、次の入力を期待していたが、それをしなかった理由:

127 elmer road ??<>() 

したがって、アンドロイドのJavaでは(しかし何でも)私は次の関数を書いたが、常にtrueを返す。どのようにこれらすべての特殊文字をフィルタリングできますか?与えられた文字列が一致しない場合に真を返す関数が必要です。

public boolean isValid(EditText et) { 
      String string = et.getText().toString(); 
      boolean isValid = true; 

      final Pattern sPattern 
        = Pattern.compile("^[`[email protected]#$%^&*()_+={}\\[\\]|\\\\:;“’<,>.?๐฿]*$"); 

      isValid= !sPattern.matcher(string).matches(); 


      return isValid; 
     } 

アップデート:私はまた、次のことを試してみました:

enter image description here

+0

あなたの正規表現は、文字列、リスト内の単一の文字、そして最後の開始を見込んでいます。 '^。* {〜!@#$%^&()_ + = {} [\] | \ :;" '<,>。?0฿]。* $ '注意して、あなたはエスケープする必要があります']'。 – sideroxylon

+0

私は例外があることをそれを試みたとき。 IDeは「Pattern.compile( "^。* [〜!@#$%^&()_ + = {} [] | \\ :;" '<,>。?0฿]。* $ ");閉じられていない文字クラス"。これは$の後の最後にあった。それは私がプログラムを実行することができますが、私は次の例外があります:java.util.UnknownFormatConversionException:変換:^ – j2emanue

+0

私の編集に注意してください ']' – sideroxylon

答えて

1

を私は与えられた文字列が一致しない場合にtrueを返す関数をしたいです。

文字セットを否定できます。 (角括弧内の^シンボルに注意してください)。これらの特殊文字が含まれていない文字列の場合はtrueを返します。

^[^`[email protected]#$%^&*()_+={}\[\]|\\:;“’<,>.?๐฿]*$ 

https://regex101.com/r/CqtqoK/1

関連する問題