【问题标题】:Advanced checking letter case (upper/lower) in string字符串中的高级检查字母大小写(大写/小写)
【发布时间】:2017-01-03 18:53:09
【问题描述】:

我正在编写一个用于修复文本区域内字母的特殊脚本。我在堆叠的地方发现了一个问题。在 Stackoverflow 上,我找不到解决方案,需要帮助。

我的脚本有一个系统,可以识别以大写首字母开头的每个单词,以及一个单词是否包含所有小写单词。但如果我得到类似LoWeRcAsE 的内容,我的脚本不会将其识别为错误。

例子:

L  - ok
o  - ok
W  - not ok
e  - ok
R  - not ok
c  - ok
A  - not ok
s  - ok
E  - not ok

如您所见,第一个字符L 可以是大写,但如果是小写也可以,但单词中的任何其他字符都需要小写。

我尝试使用 Stackoverflow 的 THIS 解决方案,但没有成功。

如何做到这一点?

【问题讨论】:

  • 这看起来很简单;你可以检查[A-Z][a-z]* || [a-z]*(或多或少)。 (答案将其包装成一个单一的、清晰的正则表达式,但它是一回事。)

标签: javascript regex


【解决方案1】:

您可以使用此正则表达式使用单词边界来验证您的案例:

/\b[a-zA-Z][a-z]*\b/

这将允许第一个字符为大写或小写字母,但强制所有其他字符为小写字母。

RegEx Demo

【讨论】:

  • 这是最难的选择。在这里,我找到了非常好的答案,但我选择了最简单的答案。在我自己编写正则表达式将近 5 年后,我发现我一遍又一遍地学习。简单干净。谢谢@anubhava
【解决方案2】:

我创建了这个函数来检查单词的大小写。 您可以在文本区域中的每个单词上调用它。

function checkCapitalization(s){
  return (s === s.charAt(0).toUpperCase() + s.slice(1).toLowerCase());
}

checkCapitalization("LoWeRcAsE")

【讨论】:

    【解决方案3】:

    不确定您需要多久检查一次特定字符串,但您可以创建一个方法来检查字符串,如下所示:

    String.prototype.isCamelCase = function(){ 
        for( var i=1;i< this.length;i++){
            if( this.charCodeAt(i) < 97) {
                return true;
            }
        }
        return false;
    } 
    
    
    "Baz".isCamelCase(); // returns false
    "fOo".isCamelCase(); // returns true 
    

    【讨论】:

      猜你喜欢
      • 2013-04-14
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      • 2011-12-11
      • 2021-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多