Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一个正则表达式,用于测试所有单词是否都是标题大小写_Javascript_Regex - Fatal编程技术网

Javascript 一个正则表达式,用于测试所有单词是否都是标题大小写

Javascript 一个正则表达式,用于测试所有单词是否都是标题大小写,javascript,regex,Javascript,Regex,我正在尝试使用正则表达式来验证以下内容是否正确: This Is A Cat 但是,要评估以下内容,则认为是错误的: This is a cat 或者这也是错误的: This Is A cat (Note the 'c' is not upper case in Cat) 我正在尝试使用JavaScript,我认为以下应该可以工作: /(\b[A-Z][a-z]*\s*\b)+/ 我的逻辑是: 从单词边界开始 匹配大写字符 匹配零个或多个小写字符 匹配零个或多个空格 匹配单词边界 重复上

我正在尝试使用正则表达式来验证以下内容是否正确:

This Is A Cat
但是,要评估以下内容,则认为是错误的:

This is a cat
或者这也是错误的:

This Is A cat (Note the 'c' is not upper case in Cat)
我正在尝试使用JavaScript,我认为以下应该可以工作:

/(\b[A-Z][a-z]*\s*\b)+/
我的逻辑是:

  • 从单词边界开始
  • 匹配大写字符
  • 匹配零个或多个小写字符
  • 匹配零个或多个空格
  • 匹配单词边界
  • 重复上述步骤一次或多次

  • 我的想法有什么问题?

    我猜你忘了在末尾加上全局匹配符号
    g

    g
    查找所有匹配项,而不是在第一次匹配后停止

    试着这样做:

    /(\b[A-Z][a-z]*\s*\b)+/g
    

    我猜你忘了在末尾加上全局匹配符号
    g

    g
    查找所有匹配项,而不是在第一次匹配后停止

    试着这样做:

    /(\b[A-Z][a-z]*\s*\b)+/g
    

    如果您只想知道字符串是否符合条件,而不关心它在哪里失败,则可以检查字符串开头的小写字母,或空格后的小写字母:

    var str='这是一只猫';
    if(str.match(/\b[a-z]/)){
    console.log(“不是标题框”);
    }
    var str2='这是一只猫';
    if(str2.match(/\b[a-z]/)){
    log('示例2不是标题大小写');
    }
    var str3='这是一只猫';
    if(str3.match(/\b[a-z]/){
    log('示例3不是标题大小写');
    
    }
    如果您只想知道字符串是否符合条件,而不关心它在哪里失败,则可以检查字符串开头是否有小写字母,或空格后是否有小写字母:

    var str='这是一只猫';
    if(str.match(/\b[a-z]/)){
    console.log(“不是标题框”);
    }
    var str2='这是一只猫';
    if(str2.match(/\b[a-z]/)){
    log('示例2不是标题大小写');
    }
    var str3='这是一只猫';
    if(str3.match(/\b[a-z]/){
    log('示例3不是标题大小写');
    }
    我的想法怎么了

    您会发现一系列标题大小写的单词,但这并不会发现有非标题大小写单词的情况

    您可以使用简单的regexp测试整个输入是否为而不是标题大小写:

    const tests=[“这是一只猫”,“这是一只猫”,“这是一只猫];
    //是否出现了后跟小写字母的断字?
    常数re=/\b[a-z]/;
    tests.forEach(test=>console.log(test,“不是标题:”,re.test(test))
    我的想法怎么了

    您会发现一系列标题大小写的单词,但这并不会发现有非标题大小写单词的情况

    您可以使用简单的regexp测试整个输入是否为而不是标题大小写:

    const tests=[“这是一只猫”,“这是一只猫”,“这是一只猫];
    //是否出现了后跟小写字母的断字?
    常数re=/\b[a-z]/;
    
    tests.forEach(test=>console.log(test,“不是标题:”,re.test(test))^
    ,在结尾添加一个
    $
    应该可以解决这个问题。
    /^\s*(?:\s*[a-Z][a-Z]*\s*\b)+\s*$/
    @ETHproductions,你应该回答这个问题,而不是发表评论,因为你是对的,真的吗?你能发布你的javascript代码吗?我相信你的正则表达式只是简单地匹配任何包含一个或多个标题大小写单词的字符串。在开头添加一个
    ^
    ,在结尾添加一个
    $
    应该可以解决这个问题。
    /^\s*(?:\s*[a-Z][a-Z]*\s*\b)+\s*$/
    @ETHproductions,你应该把它作为一个答案,而不是一个注释,因为你是对的。向下投票,真的吗?这会找到所有连续的标题大小写单词序列,但是它如何让你知道有非标题大小写的单词呢?这将找到所有连续的标题大小写单词序列,但是它如何让你知道有非标题大小写的单词呢?