正则表达式包括日期字符串,电子邮件,号码

时间:2016-10-15 07:29:30

标签: java regex

我有这个正则表达式:

String patt = "(\\w+?)(:|<|>)(\\w+?),"; 
Pattern pattern = Pattern.compile(patt);
Matcher matcher = pattern.matcher(search + ",");

我能够匹配像

这样的字符串
search = "firstName:Giorgio"

但是我无法匹配字符串

search = "email:giorgio.rossi@libero.it"

search = "dataregistrazione:27/10/2016"

如何修改正则表达式以匹配这些字符串?

3 个答案:

答案 0 :(得分:0)

您可以使用

String pat = "(\\w+)[:<>]([^,]+)"; // Add a , at the end if it is necessary

请参阅regex demo

<强>详情:

  • (\w+) - 第1组捕获1个或多个字词
  • [:<>] - 字符类中的一个字符:<>
  • ([^,]+) - 第2组捕获除,以外的1个或多个字符(在演示中,我添加\n作为演示输入文本包含换行符。)

答案 1 :(得分:0)

你可以使用这样的正则表达式:

public static void main(String[] args) {
    String[] arr = new String[]{"firstName:Giorgio", "email:giorgio.rossi@libero.it", "dataregistrazione:27/10/2016"};
    String pattern = "(\\w+[:|<|>]\\w+)|(\\w+:\\w+\\.\\w+@\\w+\\.\\w+)|(\\w+:\\d{1,2}/\\d{1,2}/\\d{4})";
    for(String str : arr){
        if(str.matches(pattern))
            System.out.println(str);
    }
}

输出是:

firstName:Giorgio
email:giorgio.rossi@libero.it
dataregistrazione:27/10/2016

但你必须记住,这个正则表达式只适用于你的数据格式。
要构成通用正则表达式,你应该使用RFC文档和文章(即here)电子邮件格式
另外this问题也很有用。

希望它有所帮助。

答案 2 :(得分:0)

角色类\w匹配[A-Za-z0-9_]。所以请将正则表达式更改为(\\w+?)(:|<|>)(.*),以匹配:,中的任何字符。

或者提及您可以预期的所有字符,例如(\\w+?)(:|<|>)[@.\\w\\/]*,