2016-05-01 66 views
-2

尋找文本是否爲微粒格式的正則表達式是什麼?尋找特定格式文本的正則表達式

格式應該遵循: AAAA-123AAAA123(具有或不具有短劃線)

當第一4個字符的範圍是AM字母和下面的3個字符與299

一個最大數

實施例:

ABCD-299將匹配

ABZR-301將不匹配

+0

來包裝它這對於正則表達式來說似乎是一個糟糕的用例。測試前四個字符,最後三個字符遵循您的規則。 –

+3

[上午] {4} - ?[0-2] [0-9] {2} – smerny

+0

@ElliottFrisch我認爲這是一個正則表達式的完美案例 –

回答

1
[A-M]{4}-?[0-2][0-9]{2} 

基本上:
[A-M]{4} =任何字母4 AM
-? =任選的破折號
[0-2] =單個0,1或2
[0-9]{2} = 2的任何數量的

將第一個數字限制爲0-2將您的數字限制爲299,並允許000-299

我不確定你是在一個字符串中搜索這個字符串還是檢查一個字符串是否等於這個......並且這個上下文可能會改變你如何使用上面的。例如,如果你正在測試一個字符串,你會想要用^$

+0

感謝您解釋它,現在我實際上更好了 –

0
^[A-M]{4}-?[0-2][0-9]{2}$ 

^意味着串

[]的開頭定義一組可能匹配的。在這種情況下,大寫字母A一直到大寫字母M(在[]內表示範圍時,連字符是一個特殊字符)(注意範圍使用ascii http://www.asciitable.com/,所以如果你做了Az,它將包括所有那些非字母數字字符之間的數字)

{} define count。在這種情況下,正好爲 4.您可以定義一個範圍,如{1,3}表示1至3,或{,7}至多7,或{5,}至少5

和?意味着焦炭以前都是可能會或可能不會存在。在這種情況下,連字符。

$表示字符串的結尾

^和$是我認爲必要的。否則該正則表達式將匹配AAAAAAAA-2342347474

反正,閱讀正則表達式。他們可以強大而有趣。 http://regexr.com/

+0

我以爲'^'的意思不是 –

+0

@MitchellGharechedaghi'^'可能有兩個特殊的含義。如果它放在字符集內,並且它是第一個字符,比如'[^ a-z]',那麼這個字符集就是否定的。所以在這種情況下,'[^ a-z]'表示任何在'a-z'範圍內不是*的字符。但是如果將它放置在任何字符集之外,那麼它表示錨代表文本的開始(它也可以被設置爲表示行的開始,但是您將需要使用多行標記)。 – Pshemo