我如何将其作为正则表达式匹配

时间:2011-12-09 01:22:20

标签: regex

如何使用正则表达式匹配字符串以匹配以下字符的任意组合:

Y M D

也就是说,以下字符串应该匹配...只要它包含任意数量的这些字符:

YYYYMMDD
blahYYMMDD
c:\mydir\YYYYDDMM
YYDD
DD
MMYYDD
...etc

所有这些都应该匹配......只要这些字符连续出现,就应该匹配。正则表达式会是什么?

2 个答案:

答案 0 :(得分:1)

一行中YMD中的两个或多个(例如MYDDYD) ?

/[YMD]{2,}/

Refiddle example


或者您的意思是这些单个字母连续出现两次或更多次(即YYMMDD)?

/Y{2,}|M{2,}|D{2,}/

您可能会对lookaheadbackreference感到有些喜欢:

# one of [YMD] followed by another one of whichever letter matched

/([YMD])(?=\1)/

答案 1 :(得分:0)

我不会被日期格式匹配的相似性误导,并且当字符串包含Y和M和D时,以任何顺序将您想要匹配的单词带给您。

这:'(?=.*M)(?=.*Y)(?=.*D)'

使用正向前瞻断言。