如何使用JavaScript测试字符串中的字母是大写还是小写?


当前回答

你也可以使用这个,它将检查字符串的小写字母和大写字母

var s = "a"
if(/[a-z]/.test(s)){
  alert ('lower case true');
}

if(/[A-Z]/.test(s)) {
 alert ('upper case true'); 
}

其他回答

你也可以使用这个,它将检查字符串的小写字母和大写字母

var s = "a"
if(/[a-z]/.test(s)){
  alert ('lower case true');
}

if(/[A-Z]/.test(s)) {
 alert ('upper case true'); 
}

对这个问题的一个好的回答应该是简洁的,正确地处理unicode,并处理空字符串和空值。

function isUpperCase(c) {
    return !!c && c != c.toLocaleLowerCase();
}

这种方法首先处理空字符串和null,然后确保将给定字符串转换为小写改变其相等性。这确保字符串根据当前本地的大写规则至少包含一个大写字母(并且不会对没有大写的数字和其他符号返回误报)。

最初的问题特别要求测试第一个字符。为了保持代码的简单和清晰,我将把字符串的第一个字符与测试它是否为大写分开。

这是直接的,可读的解决方案使用一个简单的正则表达式。

// Get specific char in string
const char = string.charAt(index);

const isLowerCaseLetter = (/[a-z]/.test(char));
const isUpperCaseLetter = (/[A-Z]/.test(char));

在现代浏览器中,您可以使用regexp和unicode属性测试。

/\p{Lu}/u.test("A") // is true
/\p{Lu}/u.test("Å") // is true
/\p{Lu}/u.test("a1å") // is false

更多信息:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes

一般类别列表如下:

https://unicode.org/reports/tr18/#General_Category_Property

其他答案的问题是,一些字符,如数字或标点符号,在检查小写/大写时也返回true。

我发现这个方法非常有效:

function isLowerCase(str)
{
    return str == str.toLowerCase() && str != str.toUpperCase();
}

这适用于标点符号、数字和字母:

assert(isLowerCase("a"))
assert(!isLowerCase("Ü"))
assert(!isLowerCase("4"))
assert(!isLowerCase("_"))

要检查一个字母,只需使用isLowerCase(str[charIndex])