2010-05-13 44 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); 
    } 
相关问题