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

3

我需要一个正则表达式来匹配包含以下内容的字符串:

  • 字母
  • 特殊字符
  • 日期(dd/mm/yy)

例如:

Payments - received by 04/13/13 

有人能帮我解决这个问题吗?我尝试了以下代码[a-z]* - [a-z]* 99/99/99,但它没有起作用。

4个回答

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

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!");

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}

我认为你不能在[]中间加空格。 - luksch

0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接