2010-05-13 85 views
20

考慮一種JavaScript方法,需要檢查給定字符串是否全部是大寫字母。輸入的字符串是人的名字。JavaScript - 檢查字符串中的任何小寫字母

當前的算法是檢查任何小寫字母。

var check1 = "Jack Spratt";  
var check2 = "BARBARA FOO-BAR"; 
var check3 = "JASON D'WIDGET"; 

var isUpper1 = HasLowercaseCharacters(check1); 
var isUpper2 = HasLowercaseCharacters(check2); 
var isUpper3 = HasLowercaseCharacters(check3); 

function HasLowercaseCharacters(string input) 
{ 
    //pattern for finding whether any lowercase alpha characters exist 
    var allLowercase; 

    return allLowercase.test(input); 
} 

是一個正則表達式是最好的方式去這裏?

您將使用什麼模式來確定字符串是否具有小寫字母字符?

+0

只是-Z。不是或例如? – 2010-05-13 22:57:37

回答

21

也:

function hasLowerCase(str) { 
    return (/[a-z]/.test(str)); 
} 
+13

這是一個以英語爲中心的小寫字母視圖。 「à」不是小寫嗎?我在這個答案被接受之後很長時間提到這個問題,因爲這個問題已經被[這個較新的問題]引用(http://stackoverflow.com/questions/3816905)。下面的'!= toUpperCase'答案更具包容性。 – 2010-09-28 21:05:04

+0

這不適用於小寫字母,你還需要檢查'undefined'。 ' 函數hasLowerCase(str){ return str? (/[a-z]/.test(str)):false; }' – parsh 2014-06-20 21:25:24

52
function hasLowerCase(str) { 
    return str.toUpperCase() != str; 
} 

alert(hasLowerCase("HeLLO")); 
alert(hasLowerCase("HELLO")); 

試試:http://jsfiddle.net/B2bvY/3/

+0

這真的應該是被接受的答案。非常聰明的先生。 – perry 2017-02-15 00:31:28

+0

該死!這確實很聰明。非常感謝。 – WilomGfx 2017-04-02 21:29:35

+0

偉大的解決方案。喜歡看到這樣的方法。 – lux 2017-04-05 21:19:43

5
function hasLowerCase(str) { 
    return str.toUpperCase() != str; 
} 

function hasLowerCase(str) { 
    for(x=0;x<str.length;x++) 
     if(str.charAt(x) >= 'a' && str.charAt(x) <= 'z') 
      return true; 
    return false; 
} 
+0

美女!謝謝。 – 2014-10-09 21:42:22

+0

第二個適用於任何沒有變音符或特殊字符的語言,這就是爲什麼第一個是首選的。 – WilomGfx 2017-04-02 21:32:18

0

但在這方面您正在使用你的腳本?你只是顯示用戶輸入,如提示()?你可以強制所需的輸出。

var inpt = prompt("Enter your name: ", ""); 
var uc = inpt.charAt(0); 
var lc = inpt.slice(1); 
var str1 = uc.toUpperCase(); 
var str2 = lc.toLowerCase(); 
var str = str1 + str2; 
document.write(str); 

根據您的使用,這可能不是一個選擇......但是,如果你正在試圖做的一切都顯示用戶輸入這種簡單的方式可以爲你工作。

1

另一種解決方案只匹配的正則表達式A-Z

function nameHere(str) { 
    return str.match(/[a-z]/); 
} 

function nameHere(str) { 
     return /[a-z]/g.test(str); 
    } 
相關問題