Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 带有所有特殊符号的正则表达式_Android_Regex - Fatal编程技术网

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

Android 带有所有特殊符号的正则表达式,android,regex,Android,Regex,我需要只允许拉丁字符、数字和所有其他符号(但不允许空白)的正则表达式 谢谢 更新: private boolean loginPassHasCorrectSymbols(String input){ if (input.matches("[A-Za-z0-9\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\>\=\?\@\[\]\{\}\\\^\_\`\~]+$")){ return true;

我需要只允许拉丁字符、数字和所有其他符号(但不允许空白)的正则表达式

谢谢

更新:

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

除了空白以外的所有内容如何

"^\S+$"
我希望我都拿到了

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

我做到了,这对我来说很有用

您可以通过在Edittext上提及空格来阻止空白,也可以通过实用的方式在Edittext.addtextChangeListner上阻止

1>

android:digits="0,1,2,3,4,5,6,7,8,9,*,qwertzuiopasdfghjklyxcvbnm,_,-" 
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) {

            }
        });
2>

android:digits="0,1,2,3,4,5,6,7,8,9,*,qwertzuiopasdfghjklyxcvbnm,_,-" 
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) {

            }
        });

如果有任何问题,请告诉我。

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

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

当你说“特殊符号”时,你是指所有不是字母数字字符的字符吗?所有可以从键盘输入的符号,但我认为你是对的)如果你只需要保护西里尔字母,为什么不使用呢?试试
input.matches((?U)[^\\s\\p{iscrylic}]*)
@stribizhev在索引3附近的regexp模式中出现语法错误:(?U)[^\s\p{iscyrical}]*@stribizhev非法参数错误((nope)cos,在这种情况下我需要保护西里尔符号)嗯,在我摸索的时候西里尔语不是需求的一部分。我没有这方面的经验,但知道:)。你可能会从中得到一些东西,但我自己都不知道如何测试它……祝你好运。@LeoCHan:你知道Python,我想你会更好,对吧?你不需要
$
@Stribizev,我想我在Java和Java方面都相当不错毕竟Python.Java是我的第一个:)但是在最初的帖子中,OP在他最初的正则表达式末尾有一个
$
,这让我认为他想要一个
$
来标记一行的结尾。@LudoBagman我只是添加了更多的反斜杠,希望我能正确地转义。没有符号“here\\\\“-有效)如何添加此符号?只是在黑暗中拍摄,但请检查添加更多反斜杠是否有效,使其成为
\\!\\”
。因此,对于
\\\\“
,您有两个反斜杠来获得一个
\`和另一个反斜杠来获得
“`。如果有效,请告诉我,以便我可以更新我的答案。