2013-09-27 43 views
-1

我在正則表達式一個小白,我試圖寫出具有最少6和最多9個總字符,其中前3個字符是字母一個正則表達式模式(不區分大小寫,α-只有),其餘的都是數字。正則表達式準確的重複不工作

我有以下模式:^\w{3}\d{3,6}$

但由於某些原因,當我輸入下面的這個模式返回true:aa12345Ap4587等。我需要前3個字符只是字母(確切)。

我希望有人能夠幫助我在此。

謝謝!

+0

'\ w'用於字母數字字符和'_' – JDB

回答

5

\w相當於[a-zA-Z0-9_]。你應該正則表達式更改爲:

^[a-zA-Z]{3}\d{3,6}$ 
+1

呃...'\ w'不是*完全相當於'[a-zA-Z0-9_]'。這取決於引擎。在.NET,例如,'\ w'通常相當於'[\ p {的L1} \ p {路} \ p {LT} \ p {螺} \ p {釹} \ p {PC} \ p { LM}]'。如果你真的想匹配'\ w'減去數字和標點符號,我相信你會使用'[\ p {}的L1 \ p {魯} \ p {LT} \ p {羅} \ p {} Lm的] ' – JDB

+0

@Cybȫʁgϟ37好吧,是的。我沒有考慮那裏的unicode角色。 –

2

使用[a-zA-Z]只有字母。我更喜歡使用[0-9]即使是相同\d一致性

/^[a-zA-Z]{3}[0-9]{3,6}$/ 

\w比賽a-z, A-Z, 0-9, _,只能用於字母數字字符

+0

謝謝,它工作!感謝您的幫助:D –

1

試試這個:

^[a-zA-Z]{3}\d{3,6}$ 

\w比賽a-z, A-Z, 0-9

2

如果你想允許更廣泛Unicode值的範圍,我建議:

[\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Lm}]{3} 

這將允許小寫,大寫,標題,「其他」和改性劑作爲前三個字符。

例如,[a-zA-Z]{3}將排除由於特殊字符的單詞「簡歷」。上面的模式將允許它。

我建議你檢查出的正則表達式字符類的文檔:

Character Classes or Character Sets

MSDN文檔也非常好,大部分是用標準的正則表達式庫兼容:

Character Classes in Regular Expressions