[英]Replace non english character in a string with utf-8 character in Android / Java
[英]validating email address which contains non-english (UTF-8) character in Java
我有休假的电子邮件ID
闪闪发光@闪闪发光.com
我需要在服务器端验证此类电子邮件,以便用户无法输入此类电子邮件。
我通过使用以下正则表达式解决了javascript中的类似问题-
/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/gi
但。 无法在Java中执行相同的操作。请帮助我。
提前致谢!!!
Java正则表达式模式(?i)[-a-z0-9+_][-a-z0-9+_.]*@[-a-z0-9][-a-z0-9.]*\\\\.[az]{2,6}
就足够了。 模式的含义如下:
(?i) # Case insensitive flag
[-a-z0-9+_] # First character
[-a-z0-9+_.]* # Zero or more characters
@ # Literal '@' character
[-a-z0-9] # Match a single character
[-a-z0-9.]* # Match zero or more characters
\. # Literal '.' character
[a-z]{2,6} # Match 2 through 6 alpha characters
以下测试代码...
final String ps =
"(?i)[-a-z0-9+_][-a-z0-9+_.]*@[-a-z0-9][-a-z0-9.]*\\.[a-z]{2,6}";
final Pattern p = Pattern.compile(ps);
for (String s : new String[] {"foo@bar.COM", "+foo@bar.COM",
"-foo@bar.COM", "fo_o@bar.COM", "f.oo@bar.COM", "a@b.cdefgh",
"3@4.com", "3@4.5.6-7.8.com", ".foo@bar.com", "a@b.cdefghi",
"闪闪发光@闪闪发光.com"})
{
final Matcher m = p.matcher(s);
if (m.matches()) {
System.out.println("Success: " + s);
} else {
System.out.println("Fail: " + s);
}
}
...将输出:
Success: foo@bar.COM
Success: +foo@bar.COM
Success: -foo@bar.COM
Success: fo_o@bar.COM
Success: f.oo@bar.COM
Success: a@b.cdefgh
Success: 3@4.com
Success: 3@4.5.6-7.8.com
Fail: .foo@bar.com
Fail: a@b.cdefghi
Fail: 闪闪发光@闪闪发光.com
通过使用Matcher.matches()
方法,由于Matcher.matches()
将在整个字符串上进行匹配,因此无需包括^
-行开始或$
-行边界匹配结构。
[更新]对不起,js代码。 尝试这个:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class EmailValidator{
private Pattern pattern;
private Matcher matcher;
private static final String EMAIL_PATTERN =
"^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@
[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
public EmailValidator(){
pattern = Pattern.compile(EMAIL_PATTERN);
}
/**
* Validate hex with regular expression
* @param hex hex for validation
* @return true valid hex, false invalid hex
*/
public boolean validate(final String hex){
matcher = pattern.matcher(hex);
return matcher.matches();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.