带有所有特殊符号的正则表达式

时间:2015-09-25 18:19:20

标签: android regex

我需要正则表达式,只允许拉丁字符,数字和所有其他符号(但不包括空格)

谢谢!

更新:

private boolean loginPassHasCorrectSymbols(String input){
        if (input.matches("[A-Za-z0-9\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\>\=\?\@\[\]\{\}\\\^\_\`\~]+$")){
            return true;
        }
        return false;
    }

4 个答案:

答案 0 :(得分:5)

我希望我能得到它们。

"[A-Za-z0-9\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\>\=\?\@\[\]\{\}\\\\\^\_\`\~]+$"

编辑:我忘记了在Java中,正则表达式也是字符串,因此您需要使用另一个\实际转义字符串中给出的每个\。我希望我现在不会错过任何一个。

"[A-Za-z0-9\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\-\\.\\/\\:\\;\\<\\>\\=\\?\\@\\[\\]\\{\\}\\\\\\^\\_\\`\\~]+$"

答案 1 :(得分:1)

一切都不是空白?

"^\S+$"

答案 2 :(得分:0)

我做到了,对我有用。

您可以通过在Edittext上提及空白来阻止它,或者也可以通过实用的方式在editetext.addtextChangeListner上对其进行阻止。

1>

android:digits="0,1,2,3,4,5,6,7,8,9,*,qwertzuiopasdfghjklyxcvbnm,_,-" 

2>

etNewPassword.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

                if (etNewPassword.getText().toString().contains(" ")) {
                    etNewPassword.setText(etNewPassword.getText().toString().replace(" ", ""));
                    int iLength = etNewPassword.getText().toString().length();
                    etNewPassword.setSelection(iLength);
                }
            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });

让我知道是否有任何问题。

答案 3 :(得分:0)

要查找除空格之外的任何符号,您可以使用此代码。我希望你觉得它有用

public static boolean hasAnySymbolExceptWhitespace(String string){
    return Pattern.matches("(?=.*[^a-zA-Z0-9] ).*", string);
}