2013-10-22 23 views
-10

我有一些代码:???什么字符((:(:(?:意味着模式匹配

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
import org.apache.commons.lang.StringUtils; 

private boolean validateEmail(...) 

Pattern p = Pattern.compile("^((?:(?:(?:[a-zA-Z0-9][\\.\\-\\+_]?)*)[a-zA-Z0-9])+)\\@((?:(?:(?:[a-zA-Z0-9][\\.\\-_]?){0,62})[a-zA-Z0-9])+)\\.([a-zA-Z0-9]{2,6})$"); 

Matcher m = p.matcher(fieldValue); 
boolean matches = m.matches(); 

if (!matches) {  
// show not valid msg... 
} 
return matches; 
} 

什么^((?:(?:(?:((?:(?:(?:在这种模式意味着 的^字符意味着什么?当你想组的表达否定(所有这些都不),但是其它字符?

+4

[文档](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html)告诉你它们是什么意思? –

+0

这里有几个Java正则表达式教程让你开始:http://www.vogella.com/articles/JavaRegularExpressions/article.html http://docs.oracle.com/javase/1.4.2/docs/api /java/util/regex/Pattern.html – codeMan

+10

他们是微笑 - 这就是正则表达式如何表达对你的同情。 –

回答

2

(?:...)表示非捕获组。?:被使用,但要避免将其返回作为所述串的匹配/捕获部。

^并不意味着当它位于正方形夹克之外时的否定。它意味着从字符串的开始处进行匹配。