Javascript 正则表达式只匹配每个单词都大写的字符串,除了“quot;“在”中&引用;“的;

Javascript 正则表达式只匹配每个单词都大写的字符串,除了“quot;“在”中&引用;“的;,javascript,regex,Javascript,Regex,我试图使用正则表达式(javascript)只匹配每个单词都大写的字符串,除了允许小写的两个单词(“in”,“of”) 例如: 敏捷的棕色狐狸跳跃[传球] 敏捷的棕色狐狸 跳转[失败] 敏捷的棕色狐狸跳跃[失败] 快速棕色 狐狸跳跃[传球] 快跑的棕色狐狸[经过] 我发现了一个正则表达式,我弗兰肯斯坦对它的大写部分进行了“某种”处理: ^\b(?:[A-Z]\w+\b(?:\s*)?)+$ 但是,我不知道如何修改它以允许示例4和5 谢谢你的帮助,我是第一次来 Regex,并不是所有问题的解决方

我试图使用正则表达式(javascript)只匹配每个单词都大写的字符串,除了允许小写的两个单词(“in”,“of”)

例如:

  • 敏捷的棕色狐狸跳跃[传球]
  • 敏捷的棕色狐狸 跳转[失败]
  • 敏捷的棕色狐狸跳跃[失败]
  • 快速棕色 狐狸跳跃[传球]
  • 快跑的棕色狐狸[经过]
  • 我发现了一个正则表达式,我弗兰肯斯坦对它的大写部分进行了“某种”处理:

    ^\b(?:[A-Z]\w+\b(?:\s*)?)+$
    
    但是,我不知道如何修改它以允许示例4和5


    谢谢你的帮助,我是第一次来

    Regex,并不是所有问题的解决方案,我认为最好在这种情况下编写如下内容:

    let语句=[
    “敏捷的棕色狐狸跳跃”,
    “敏捷的棕色狐狸跳跃”,
    “敏捷的棕色狐狸跳跃”,
    “狐狸的敏捷跳跃”,
    “敏捷的棕色狐狸”
    ];
    const validateContent=(句子)=>{
    让单词=句子。拆分(“”);
    返回单词。每个(单词=>{
    返回单词[0]==单词[0]。toUpperCase()
    ||['in','of']包括(单词);
    });
    }
    句子。forEach(句子=>{
    log(句子“=>”,validateContent(句子));
    
    });您可以使用您的模式,如果您还想匹配单个大写字符,可以选择重复单词chars,并对希望允许的小写单词使用替换

    然后可以重复前面有1个或多个空格字符的相同部分

    ^(?:[A-Z]\w*|in|of)(?:\s+(?:[A-Z]\w*|in|of))*$
    
    模式匹配:

    • ^
      字符串的开头
    • (?:[A-Z]\w*| in | of)
      匹配大写字符A-Z和可选单词字符
    • (?:
      非捕获组
      • \s+
        匹配1+空格字符
      • (?:[A-Z]\w*| in | of)
        匹配大写字符A-Z和可选单词字符
    • )*
      关闭非捕获组并可选地重复
    • $
      字符串结尾

    const模式=/^(?[A-Z]\w*| in | of)(?:\s+(?:[A-Z]\w*| in | of))*$;
    [
    “敏捷的棕色狐狸跳跃”,
    “敏捷的棕色狐狸跳跃”,
    “敏捷的棕色狐狸跳跃”,
    “狐狸敏捷的棕色跳跃”,
    “敏捷的棕色狐狸”,
    
    ].forEach(s=>console.log(pattern.test)`${s}[PASS]`:`${s}[FAIL]`)
    除了弗兰肯斯坦的尝试,OP对
    RegExp
    (JavaScript)的实际了解有多少?已经足够另一种方法/尝试了吗?谢谢,这是我的第二次尝试,但明显有缺陷:^\b(?[A-Zorf]\w++\b(?:\s*)?)+$快速棕色狐狸的
    怎么样?@georg,它也在工作,有什么问题吗?