2

我将如何编写一个 JavaScript 函数来检测用户是否在 a 中输入全大写<textarea>,并在违规者更正其文本之前不允许提交表单?可以理解的是,全大写的定义有待商榷,但这是我的目标:

  • 你不能那样做。这不聪明。显然是我试图蛇出的东西,因为它令人讨厌。
  • 我喜欢这所学校。是可以接受的,因为单字母“全大写”单词是英语的一部分。
  • 我的意思是,来吧!这是荒唐的!这应该可以接受吗?在不支持富文本的文本字段中,用户需要能够表达强调。我认为这应该是可以接受的。

有人有什么建议吗?我想一个正则表达式是有序的。

4

3 回答 3

6

用于检查字符串是否包含大写字母但没有小写字母的 Javascript 函数:

function allCaps(word) {
    var containsUpper = /[A-Z]/.test(word);
    var containsLower = /[a-z]/.test(word);

    return containsUpper && !containsLower;
}
于 2013-05-26T06:45:47.233 回答
2

我建议获取大写字母的比例。这是一种方法:

function getCapsRatio(val) {
    // Get the number of uppercase letters
    var up = val.match(/[A-Z]/g).length,

    // Get the number of letters (no space)
        fullLetters = val.match(/[^\s+]/g).length;

    // So the ratio of uppercase letters compared to downcase is...
    return (up * 100) / fullLetters;
}

所以你会像这样使用这个函数:

var ratio = getCapsRatio(value);
if (ratio > 50) {
    // 50% of uppercase letters? this guy is all caps!
}

这应该被研究,但我想 50% 是一个很好的比例来认为这个人都是大写的。

于 2013-05-26T07:59:47.123 回答
2

也许只是这个:

 /[a-z]/i.test(str) && str.toUpperCase () == str

将原始字符串与大写的字符串进行比较,如果相等,则用户只输入了大写字母。

于 2013-05-26T07:50:43.510 回答