2012-01-23 259 views
1

我需要驗證輸入,就像是EN-US或EN-US或AR-AE 我已經搜索網,發現它有點難以理解,並建立一個普通的表達上的字符串,它是不超過長度爲5個字符,並且應該不區分大小寫。正則表達式

我創建了一個[a-z][a-z][-][a-z][a-z]這一項工作正常,但它不檢查長度 它將匹配EN-USXYZ也

問候

+3

如果你是相配的文化,要注意的不是所有的都是兩個兩個字母的部分。有一些有。例如,一些中國文化背離了這個(例如'zh-Hans'- * Chinese(Simplified)*)。另外,一些文化有三個部分,例如'sr-Cyrl-BA' - *塞爾維亞語,西裏爾字母(波斯尼亞和黑塞哥維那)*。 –

回答

0

您使用^$指定的起點和終點的字符串。

^[a-z][a-z]-[a-z][a-z]$ 

或者使用乘數:

^[a-z]{2}-[a-z]{2}$ 

您還必須包括大寫字符的A-Z區間,除非指定情況下insensetivity爲正則表達式對象:

^[A-Za-z]{2}-[A-Za-z]{2}$ 
3

試試這個:

^[a-z][a-z][-][a-z][a-z]$ 
4

這是什麼錨點用於:

(?i)^[a-z]{2}-[a-z]{2}$ 

Th

Regex regexObj = new Regex("^[a-z]{2}-[a-z]{2}$", RegexOptions.IgnoreCase); 
1

使用正則表達式:

^[a-z]{2}-[a-z]{2}$ 
4

使用這樣的一個:

^[a-z]{2}-[a-z]{2}$ 
0

你應該使用錨ë不區分大小寫的選項(?i)也可以編譯正則表達式時設置你的表達:

^[a-z][a-z][-][a-z][a-z]$ 
0

\w{2}[-]\w{2}應該做的伎倆:

\w - >字符
{2} - >確切的2倍

編輯:\w還允許號碼,以便[a-z]{2}[-][a-zA-Z]{2}

+0

這也符合EN-USassd而應該失敗這種情況它不檢查字符串 – Learning

+0

\ W也包括'_'的長度,所以模式匹配'__,__'... – Guffa