2014-04-02 67 views
6

我試着用正則表達式如下...正則表達式只允許字母數字

  • 只有AZ和0-9
  • 沒有在自己的
  • 不能只是一個數字字符在他們的自己
  • 可以對自己剛剛的信件,但至少2個字符

我有這個迄今爲止http://regex101.com/r/yW1pV8 ...

.*[a-zA-Z]{2,}+.* 

這似乎符合我的critera,除了它不阻止我放入其他字符,如$ _!等等......

一些正確的測試數據是...

579 International Road 
International Road 

一些不正確的數據是...

679 
3 
$£ 
A 

我要去哪裏錯了?

+0

什麼是'*'的? – arshajii

+0

您的例子有沒有測試數據....... –

回答

4

.*匹配任何東西,這不是你想要的。此外,您不需要+,因爲X{n,}已經意味着X至少n倍。最後,你忘記了0-9部分。所以它看起來像這樣會做:

[a-zA-Z0-9]{2,} 

一些正則表達式的口味有[a-zA-Z0-9]作爲一個預先定義的字符類。例如,在Java中它是\p{Alnum}

如果您還想允許空間(根據您的測試數據),使用\s

(?:\s*[a-zA-Z0-9]{2,}\s*)* 
+0

,這並不工作,爲我和我的測試數據,我有這個數據 – fightstarr20

+1

@ fightstarr20看起來你也想允許的空間更新了原來的職位。查看編輯。 – arshajii

+0

是的,剛剛發現,錯過了空間!現在,這工作得更好,但確實還允許數字是建立在他們自己的 – fightstarr20

0
var pattern = new RegExp(/^(?=.*\d)(?=.*[a-zA-Z]).{2,}$/); 
alert(pattern.test(value) + value); 

對於字母號碼

相關問題