正则表达式在验证器中工作,在java代码中不起作用

时间:2015-12-01 17:48:24

标签: java android regex

我在检查电子邮件地址^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$

时使用此正则表达式时遇到问题

我已经尝试过这个正则表达式验证器:https://regex101.com并且没有问题,但是在java中添加反斜杠时{@ 1}}它不起作用。

为了匹配我正在使用此代码:

"^([^@\\s]+)@((?:[-a-z0-9]+\\.)+[a-z]{2,})$"

2 个答案:

答案 0 :(得分:1)

要在正则表达式中使用不区分大小写的修饰符,可以使用Pattern.CASE_INSENSITIVE编译模式,也可以在模式的开头使用内联修饰符(?i)

String email_pattern = "(?i)^([^@\\s]+)@((?:[-a-z0-9]+\\.)+[a-z]{2,})$"

Pattern ptrn = Pattern.compile(EMAIL_PATTERN, Pattern.CASE_INSENSITIVE)

请注意,所有不区分大小写的Android regexp都支持Unicode 。见Android regex syntax reference

  

请注意,在Android上,UNICODE_CASE始终处于开启状态:不区分大小写的匹配始终可识别Unicode。

答案 1 :(得分:0)

使用以下代码进行电子邮件字符串验证。

private boolean isValidEmaillId(String email) {

    return Pattern
            .compile(
                    "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@"
                            + "((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?"
                            + "[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\."
                            + "([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?"
                            + "[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|"
                            + "([a-zA-Z]+[\\w-]+\\.)+[a-zA-Z]{2,4})$")
            .matcher(email).matches();
}