2010-06-18 203 views

回答

39
/^[a-zA-Z]+$/.test('sfjd') 

注意:如果您有任何標點符號或任何內容,則這些也都是無效的。虛線和下劃線是無效的。 \w涵蓋a-zA-Z和其他一些單詞字符。這完全取決於你需要什麼。

+0

你知道regex.test(string)和string.match(regex)之間是否有很大區別嗎? – 2010-06-18 21:29:53

+0

嗯看來我只是缺少開始和結束標籤,謝謝! – yoda 2010-06-18 21:38:57

+1

其他語言的字母呢? – vsync 2015-01-12 17:11:11

5

另一種選擇是使用case-insensitive flag i,那麼不需要額外的字符範圍A-Z。

var reg = /^[a-z]+$/i; 
console.log(reg.test("somethingELSE")); //true 
console.log("somethingELSE".match(reg)[0]); //"somethingELSE" 

下面是關於這個表達式與測試是如何工作的DEMO()和匹配()。

+0

只是爲了澄清,當這個表達式有其他的時候,這個表達式是否會返回null,比如說'&'字符存在?如果只有英文字母,那麼它會返回輸入本身? – MadPhysicist 2016-07-23 16:18:59

+1

@MadPhysicist TLDR;是。說明:如果沒有匹配,使用'string.match(regex)'將返回null,否則返回一個匹配字符串數組。由於這個正則表達式匹配從字符串('^')開頭到字符串末尾(''')的所有內容,所以這裏的match()將返回整個字符串或null。查看我的[DEMO](https://jsfiddle.net/shawn1/ebuno94c/)以獲得'regex.test(string)'或'string.match(regex)'的用法。 – 2016-07-24 00:09:44

+1

@MadPhysicist澄清:匹配()這裏實際上返回一個數組與整個字符串在零索引。 – 2016-07-24 00:25:45

-2

如果你不介意這些特殊字符("[", "\", "]", "^", "_", "`"),你也可以這樣做:

/^[A-z]+$/.test('string') 

var matches = [], special = []; 
 

 
// Test ASCII characters (0-255) 
 
for (var i=0,n=255; i < n; i++){ 
 
    var char = String.fromCharCode(i); // get character 
 
    
 
    if (/[A-z]/.test(char)){ 
 
    matches.push(char); 
 
    if (!/[a-zA-Z]/.test(char)) 
 
     special.push(char); 
 
    } 
 
} 
 

 

 
console.log('matches: ', matches); 
 
console.log('special characters: ', special);

發表評論,如果你沒有看到!/[a-zA-Z]/.test(char) ,需要知道誰將來從協助中刪除;)

+0

很想爲解釋原因而投降的人。我只能假設他們沒有閱讀答案,或者運行代碼片段?也許答案是不正確的,需要刪除,沒有進一步解釋,沒有人知道爲什麼。請解釋DV。 – vol7ron 2016-07-25 19:57:47

+0

我的意思是在回答問題中提到'\ w',它包含某些非alpha字符。如果這是可以接受的,那麼這個範圍也是可以接受的。 – vol7ron 2017-04-11 12:33:37

+0

我低估了,因爲你的解決方案直接違背了*「只接受字母,從a到z和從A到z」*的要求,似乎並沒有在接受的答案 – geg 2017-04-12 19:42:16