正则表达式匹配单词,特殊字符和日期

时间:2013-05-17 14:22:32

标签: java regex

我需要一个按顺序包含的字符串的正则表达式:

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

e.g。

Payments - received by 04/13/13 

有人可以帮我解决这个问题吗?我尝试了以下[a-z]* - [a-z]* 99/99/99,但它无效。

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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!");

答案 2 :(得分:0)

尝试用d替换9,d是[0-9]的占位符。 [a-z]也不等于[A-Za-z]

当然,这仍然会与第99个月的第35个无效日期相匹配

答案 3 :(得分:0)

差不多,但有几个问题:

  • [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}