Javascript 检测文本区域中所有大写字母的使用情况?
如何编写JavaScript函数来检测用户是否在Javascript 检测文本区域中所有大写字母的使用情况?,javascript,regex,Javascript,Regex,如何编写JavaScript函数来检测用户是否在中键入所有大写字母,并在违规者更正其文本之前不允许提交表单?可以理解,所有上限的定义都有争议,但我的目标是: 你不能那样做。这不聪明。很明显这就是我想说的,因为这很讨厌 我喜欢这所学校。是可以接受的,因为单字母“所有大写”单词是英语的一部分 我是说,来吧!这太荒谬了!这是否可以接受?在不支持富文本的文本字段中,用户需要能够表达强调。我认为这应该是可以接受的 有人有什么建议吗?我想正则表达式已经就绪。用于检查字符串是否有大写字母但没有小写字母的J
中键入所有大写字母,并在违规者更正其文本之前不允许提交表单?可以理解,所有上限的定义都有争议,但我的目标是:
- 你不能那样做。这不聪明。很明显这就是我想说的,因为这很讨厌
- 我喜欢这所学校。是可以接受的,因为单字母“所有大写”单词是英语的一部分
- 我是说,来吧!这太荒谬了!这是否可以接受?在不支持富文本的文本字段中,用户需要能够表达强调。我认为这应该是可以接受的
有人有什么建议吗?我想正则表达式已经就绪。用于检查字符串是否有大写字母但没有小写字母的Javascript函数:
function allCaps(word) {
var containsUpper = /[A-Z]/.test(word);
var containsLower = /[a-z]/.test(word);
return containsUpper && !containsLower;
}
也许简单地说:
/[a-z]/i.test(str) && str.toUpperCase () == str
将原始字符串与其大小写进行比较,如果相等,则用户只键入大写字母。我建议获得大写字母的比例。这里有一个方法:
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%是一个很好的比率,认为这家伙都是大写。可能你需要寻找ASCII字符>95。也许只是为允许的大写字符百分比设置一个阈值?不超过50%?我认为,一旦你更准确地说明问题,答案就不难了。你的定义仍然不够精确。你将如何衡量这一点?最多允许n个大写单词?我不确定定义一个阈值是否合适,因为用户基本上可以在所有大写字母中键入每一个单词,并将阈值保持在50%以下,不是吗?我认为需要应用某种逻辑如果文本区域不包含小写字母,并且包含任何大写字母,那么它都是大写的。第二个检查可以避免抱怨字段是否只是数字(尽管对于文本区域来说这似乎不太可能。如果只
word.toUpperCase()===word
就足够了,这是一个非常糟糕的解决方案。@FlorianMargaine不一定是因为解决方案word.toUpperCase()===word
如果word===12345或….或其他不包含字母的字符串,则验证结果将为true。如果有人键入不包含字母的字符串,则验证结果将不正确。假设有人问:“你多大了?”该人回答“13”。系统不允许他们发送回复“13”因为它会认为这都是toUpperCase wayGood point@chrislondon的caps。我添加了一个测试来解决这个问题。