【问题标题】:Android Studio Regular ExpressionAndroid Studio 正则表达式
【发布时间】:2016-03-11 06:03:00
【问题描述】:

我有这个:

 public final static boolean isValidNickName(String target)
 {
     return Pattern.compile("^.((?=.*[가-힣]).{1,12})((?=.*[a-zA-Z0-9]){2,12}).$").matcher(target).matches();
 }

我希望该模式能够验证以下内容:

  1. 允许 [가-힣] 范围内的一个或多个字母。

  2. 允许从 2 个组合开始的字母数字变化,例如)1a、가1、가a、5bcc、994930s0 是允许的

  3. 排除其他所有内容(如特殊字符或单个字母数字字符)

当我现在运行它时应用程序退出。

另外,我有这个正在工作:

    public final static boolean isValidPassword(String target) 
   {
        return Pattern.compile("(?=.*[a-zA-Z])(?=.*[0-9]).{4,12}").matcher(target).matches();
   }

但是当包含特殊字符时返回true

我希望它在包含特殊字符时返回 false

【问题讨论】:

    标签: java android regex


    【解决方案1】:

    此代码可能对某人有所帮助。

    注意Pattern.UNICODE_CASE

    public boolean isPasswordValid(String password) {
    
    
        String regEx = "^(?:(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).*)[^\\s]{8,}$";
    
        CharSequence inputStr = password;
    
        Pattern pattern = Pattern.compile(regEx,Pattern.UNICODE_CASE);
        Matcher matcher = pattern.matcher(inputStr);
    
        if(matcher.matches())
            return true;
        else
            return false;
    }
    

    【讨论】:

    • 在 Java 中,字符串是 Unicode,所以它们可能与 ascii 不同
    【解决方案2】:

    试试这个。愿它有帮助..
    // 检查密码是否有效 这个字符类

    [\p{L}\p{No}\p{Space}]
    

    将包括 Unicode 声明为“字母”、“数字”或“空白字符”的所有字符。如果您想将字符串与此类字符类进行匹配,您可以编写以下内容:

    input.matches("[\\p{L}\\p{No}\\p{Space}]+")
    

    【讨论】:

    • 不.. 与我的相比,这种语法方式没有区别
    • 好的。但是这段代码对我很有效。这就是我建议你的原因。
    • 你的不包括@!和其他特殊字符?
    • 好的。对不起,我忘了你必须排除特殊字符,我已经更新了我的答案。请看。
    • 嗯,现在不包括数字了。
    【解决方案3】:
    public final static boolean isValidPassword(String target) {
        return Pattern.compile("^(?=.*\\d)(?=.*[a-zA-Z])[a-zA-Z0-9]{4,12}$").matcher(target).matches();
    }
    
    public final static boolean isValidName(String target) {
        return Pattern.compile("^(?=.*[a-zA-Z가-힣])[a-zA-Z가-힣]{1,}$").matcher(target).matches();
    
    }
    
    public final static boolean isValidNickName(String target) {
        return Pattern.compile("^(?=.*[a-zA-Z\\d])[a-zA-Z0-9가-힣]{2,12}$|^[가-힣]$").matcher(target).matches(); 
    }
    

    这是经过 3 个小时的挣扎后的答案......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多