2011-04-05 26 views
1

我只是在尋找一個正則表達式來檢查,看看是否存在數字和字母。正則表達式來檢查字段是否有數字和字母

只是爲了澄清查詢,正則表達式將被寫入JavaScript並用於驗證地址。

+0

http://stackoverflow.com/questions/576196/regular-expression-allow-letters-numbers-and-spaces-with-at-least-one-letter – Seth 2011-04-05 18:47:07

+0

通過數字,你的意思是任何代碼點是一個十進制數字,還是你的意思是完整的數字,如∛-37或6.02e23或6.02྾10²³或π? – tchrist 2011-04-05 22:46:58

回答

0

如果你沒有空間匹配任何一個字,用數字和字母,可以假定他們接觸的地方 - 所以,如果它匹配字母,然後數或數字,然後信我們有一場比賽 - 這樣:

([a-zA-Z][0-9]|[0-9][a-zA-Z])


編輯:其中可能有空格,那麼你可以使用向前斷言這樣

([a-zA-Z](?=.*[0-9])|[0-9](?=.*[a-zA-Z])) 
+0

我期待驗證一個地址或至少有些驗證它 – Dave 2011-04-05 18:51:53

+1

未能匹配「é1」。 – ikegami 2011-04-05 18:53:07

+0

通過一個小的修改,你可以在後面的任何地方用數字來做字母,或者用稍後的某個字母(使用lookaheads)來表示這樣的數字:'([a-zA-Z](?= [0-9])| 0-9](?= [a-zA-Z]))' – 2011-04-05 18:57:05

1

更容易運行兩次檢查。

/\pL/ && /\pN/ 

要在一個模式兩者都做檢查,你需要像

/\pL.*\pN|\pN.*\pL/s 

語言支持零寬度向前看符號可以消除冗餘:

/^(?=.*\pL/)(?=.*\pN/)/s (or /^(?=.*\pL/).*\pN/s) 

但它難以閱讀。

請原諒我不使用JS的匹配函數,但問題是真正的正則表達式,我不熟悉JS的匹配函數。

+0

但JavaScript沒有Unicode支持,除了匹配單個字符http://www.regular-expressions.info/unicode.html – 2011-04-06 05:11:07

+0

@James Kyburz,我想你的意思是它的正則表達式引擎不支持Unicode屬性。如果是這樣,這是非常不幸的,因爲OP將不得不做很多額外的工作。想一想,加拿大有22%的人住在魁北克省。我忽略@BIlly Moon的說法,就是在這些地址上大肆宣傳是常識。 – ikegami 2011-04-06 17:37:21

-1

這應做到:

^[\w]*[^\W_][\w]*$ 
+0

這匹配'a'(應該失敗)並且不匹配'@ a1'(應該通過)。 – gasman 2014-06-19 14:36:13

3

我會用它匹配任何字母后跟任意數字(與任何可能的字符之間)正則表達式或數字,然後信(之間的任何東西):

var hasNumbersAndLetters = function(str) { 
    var regex = /(?:[A-Za-z].*?\d|\d.*?[A-Za-z])/; 
    return !!str.match(regex); 
}; 
+1

A-Z總是談論字母的錯誤方式。歡迎使用Unicode。 – tchrist 2011-04-05 22:35:36

+0

@tchrist:如此真實,快速地擺脫習慣;但是如何在正則表達式中將任何支持語言的字母與Unicode進行匹配? – maerics 2011-04-06 03:47:31

+0

@mearics:我不知道任何支持的語言的含義:我只使用支持Unicode的語言。 – tchrist 2011-04-06 10:18:53

0

看到你想驗證由正則表達式的答案刪除地址

如JavaScript沒有Unicode支持,除了匹配單個字符http://www.regular-expressions.info/unicode.html

+0

根據[Unicode標準的要求](http://unicode.org/reports/tr18/#Compatibility_Properties),Javascript的'\ w'包含'\ pL',還是不這樣做?如果沒有,你將不得不更加費力地寫出來。此外,你應該使用Unicode'Dash'屬性來指定所有不規則的代碼點。 – tchrist 2011-04-05 22:39:32

相關問題