如何使用正则表达式匹配字符串以匹配以下字符的任意组合:
Y M D
也就是说,以下字符串应该匹配...只要它包含任意数量的这些字符:
YYYYMMDD
blahYYMMDD
c:\mydir\YYYYDDMM
YYDD
DD
MMYYDD
...etc
所有这些都应该匹配......只要这些字符连续出现,就应该匹配。正则表达式会是什么?
答案 0 :(得分:1)
一行中Y
,M
或D
中的两个或多个(例如MY
,DD
或YD
) ?
/[YMD]{2,}/
或者您的意思是这些单个字母连续出现两次或更多次(即YY
,MM
或DD
)?
/Y{2,}|M{2,}|D{2,}/
您可能会对lookahead和backreference感到有些喜欢:
# one of [YMD] followed by another one of whichever letter matched
/([YMD])(?=\1)/
答案 1 :(得分:0)
我不会被日期格式匹配的相似性误导,并且当字符串包含Y和M和D时,以任何顺序将您想要匹配的单词带给您。
这:'(?=.*M)(?=.*Y)(?=.*D)'
使用正向前瞻断言。