2013-05-17 306 views
3

我需要一个正则表达式,其包含有序串话,特殊字符和日期:正则表达式匹配

  • 字母
  • 一个特殊字符
  • 日期(日/月/年)

eg

Payments - received by 04/13/13 

任何人都可以帮我解决这个问题吗?我尝试了以下[a-z]* - [a-z]* 99/99/99,但它不起作用。

回答

1
pattern = Pattern.compile("[a-zA-Z]* - [a-zA-Z]* [0-9]{2}/[0-9]{2}/[0-9]{2}"); 
+0

欢迎您 – luksch

0

尝试在Java中使用正则表达式:

Pattern pat = Pattern.compile(".+ - .+\\d\\d/\\d\\d/\\d\\d"); 

要检查是否匹配字符串:

String str = "Payments - received by 04/13/13"; 
Matcher m = p.matcher(str); 
if (m.find()) 
    System.out.println("the string matches!"); 
+1

谢谢奥斯卡..它是工作.. – user2394281

0

尝试用d小号更换787-9,d是[0-9]一个占位符。 另外[a-z]不等于[A-Za-z]

当然,这仍然将匹配无效日期,如第99个月

0

几乎35,但有几个问题:

  • [A-Z]仅匹配小写字符。对于任何数字/字母,您都可以使用\ w,对于小写字母和大写字符,您只能使用[a-zA-Z]。
  • 要在那里获得空格,您可以使用[\ w]或[a-zA-Z](注意末尾有额外的空格)
  • 9与字符字面意思相符9.您可以使用\ d匹配任何数字。

试试这个:

[a-zA-z ]* - [a-zA-Z ]* \d{2}/\d{2}/\d{2} 
+0

我不认为你可以有一个空间的'''[]'' ' – luksch

+0

似乎好吗? http://ideone.com/0fh5aR – Lily