2015-12-30 75 views
1

我想寫一個正則表達式模式,它將匹配18個字符長度的確切字母數字(空格和特殊字符不允許)字符串。什麼是正則表達式匹配一個確切的字母數字18個字符的字符串?

實例:

1)axspa6577dRTu8Hjg2 - 這應該與

2)axspa6577drtu8hjg2 - 這應該與

3)6577daxspaRtU8hJG2 - 這應該與

4)657712873456901338 - 此不應該匹配

5)sedrfutklenfgoemsl - 這應該不符合

6)ASDEFRTGJUNLEOFNVY - 這應該不符合

7)AS34df67-_%&*()@#! - 這不應該匹配

我嘗試下面的一個,但它不爲我工作。

^((?=.*\d)(?=.*[a-zA-Z]).{18})$ 

它匹配所有特殊字符以及字母數字字符串。

+0

歡迎來到堆棧溢出。請參閱http://stackoverflow.com/help/how-to-ask瞭解如何形成一個好問題的提示。 5分鐘的搜索告訴我([0-z] {18})應該工作。 – Onots

+0

你需要完全單一的正則表達式嗎? –

+0

@Onots那不是他想要的 –

回答

0

下面的正則表達式使用積極的展望來匹配:

(?=[a-zA-Z0-9]*[a-zA-Z])(?=[a-zA-Z0-9]*[0-9])[a-zA-Z0-9]{18} 

它匹配任何組至少包含一個字母,至少一個數字,只包含字母和數字,長度恰好爲18個字符。

+0

是的..這是工作絕對好..非常感謝你的幫助。 –

+0

如果這是答案,請將其標爲解決方案。 – Tobias

0

使用regexp匹配字母和數字,並在字符串中的其他地方字母和數字strikt比賽之間的邊界:

/^[\da-zA-Z]*([\d][a-zA-Z]|[a-zA-Z][0-9])[\da-zA-Z]*$/ 

/^[[:alnum:]]*([\d][[:alpha:]]|[[:alpha:]][0-9])[[:alnum:]]*$/ 
+0

這也將允許下劃線(_)以及..這不是預期的。 –

+0

@SatishA更新 –

相關問題