我想匹配SEDOL(正好爲7個字符:6個字母數字字符,然後1個數字的字符)正則表達式 - 僅匹配7個字符?
我正則表達式
([A-Z0-9]{6})[0-9]{1}
匹配正確的,但字符串大於7個字符是開始有效的比賽也匹配(如果你明白我的意思:))。例如:
B3KMJP4
匹配正確但這樣做:
B3KMJP4x
不應該匹配。
任何人都可以告訴我如何避免這種情況?在正則表達式(稱爲錨)的端部
我想匹配SEDOL(正好爲7個字符:6個字母數字字符,然後1個數字的字符)正則表達式 - 僅匹配7個字符?
我正則表達式
([A-Z0-9]{6})[0-9]{1}
匹配正確的,但字符串大於7個字符是開始有效的比賽也匹配(如果你明白我的意思:))。例如:
B3KMJP4
匹配正確但這樣做:
B3KMJP4x
不應該匹配。
任何人都可以告訴我如何避免這種情況?在正則表達式(稱爲錨)的端部
美元符號表示字符串的結束:
^([A-Z0-9]{6})\d$
我還添加了「^」在此表示串的開始的開始和防止匹配xB3KMJP4 我也簡化了原來的正則表達式。
順便說一下,根據維基百科,對於第一個字符,不使用元音。我不太確定這是一個規則還是一個慣例。
您需要同時使用start
和end
anchors
這樣的:
^([A-Z 0-9]{6})[0-9]{1}$
這將匹配具有6個字母數字+字符空間,後面跟着一個數字的字符串。如果這樣的字符串被發現爲後綴或前綴一個更大的字符串不匹配。
你也可以擺脫{1}
,因爲[0-9]
自己匹配一個數字。
另外\d
代表一位數字。所以,你可以縮短你的正則表達式如下:
^([A-Z \d]{6})\d$
^([A-Z\d]{6})\d$
你忘記了正則表達式匹配字符串中的任何地方。要修復它,請試試這個。
^([A-Z 0-9]{6})[0-9]{1}$
^表示匹配字符串的開頭,$表示匹配字符串的結尾。
4答案完全一樣,現在就是一致性!謝謝大家。 – Simon 2010-03-15 15:42:25
除了下面的(正確的)答案,你需要開始/結束錨點,你需要從你的第一個字符類中去掉空間('A A A 0'也與你的正則表達式匹配)。另外(爲了清楚起見)刪除不必要的'{1}'。 – 2010-03-15 15:46:36
@Tim,我注意到所有四個答案都重複了你指出的兩個錯誤。你應該發佈你自己的答案,所以西蒙可以接受這個答案。 – 2010-03-15 15:52:42