我需要一個正則表達式的字符串中的任何格式相匹配:如何編寫正則表達式以匹配AAAA00000000-0000?
- 「AAAA00000000」
- 「AAAA00000000-0000」
- 「0000000000」
我已經得到了第一個和第三個模式的權利,這是我想出了
^(([a-zA-Z]{4}[0-9]{8})|([0-9]{10}))$
我不能得到那個工作包括第二種模式。
我需要一個正則表達式的字符串中的任何格式相匹配:如何編寫正則表達式以匹配AAAA00000000-0000?
我已經得到了第一個和第三個模式的權利,這是我想出了
^(([a-zA-Z]{4}[0-9]{8})|([0-9]{10}))$
我不能得到那個工作包括第二種模式。
^[a-zA-Z]{4}[0-9]{8}(-[0-9]{4})?$
即,XXXXnnnnnnnn
和可選-nnnn
一部分。
XXXXnnnnnnnn
XXXXnnnnnnnn-nnnn
你可以離開了最外面的括號,因爲這組等於整場比賽(捕獲組0)。
編輯
更新匹配nnnnnnnnnn
,太:
^[0-9]{10}|[a-zA-Z]{4}[0-9]{8}(-[0-9]{4})?$
匹配:
nnnnnnnnnn
XXXXnnnnnnnn
XXXXnnnnnnnn-nnnn
編輯#2
對此發表評論,這是最短/最可讀的,我能煮了:
^[0-9]{10}|[a-zA-Z]{4}[0-9]{8}(-[0-9]{4}|)$
特性同上面剛。
^\ w {4} \ d {8}( - \ d {4})?$
修正了一個錯字
你缺少了 「 - 」 第二格式...
^[a-zA-Z]{4}([0-9]{8}|[0-9]{8}\-[0-9]{4})$
`[0-9] {10}`從哪裏來?是否也應該匹配「0000000000」(沒有前導字母)? – jensgram 2010-11-24 14:45:36
是的,請參閱更新 – dom 2010-11-24 14:47:31
好的,請參閱更新:) – jensgram 2010-11-24 14:48:59