[英]Regex match line with all words starting in uppercase
我正在尝试创建一个正则表达式模式(在 JavaScript 中),该模式匹配所有单词都以大写字母开头的行,无论长度如何。 它还必须考虑到任意数量的等号 ('=') 位于任一侧。
例如
火柴:
==这会匹配==
===我喜欢我的猫===
====等号的数量无关紧要===
======线长等也不行=====
但
==这不会不管它的长度==
===这也不会匹配,等等===
任何帮助将不胜感激。
您可以在任一侧匹配一个或多个等号,例如=+
。
匹配以大写字母开头的单词可以以[AZ]
开头,后跟\\w
一次或多次。 如果你想匹配比\\w
更多的字符,你可以创建一个字符类[\\w.]
来添加匹配点,例如。
此模式将在等号之间匹配零次或多次以大写字符开头的单词,后跟空格,并以大写字符开头的单词结尾:
^=+(?:[AZ]\\w* )*(?:[AZ][\\w.]+)=+$
const strings = [ "==This Would Match==", "===I Like My Cats===", "====Number Of Equals Signs Does Not Matter===", "=====Nor Does Line Length Etc.=====", "==This would not regardless of its length==", "===Nor would this match, etc===", "=aaaa=" ]; let pattern = /^=+(?:[AZ]\\w* )*(?:[AZ][\\w.]+)=+$/; strings.forEach((s) => { console.log(s + " ==> " + pattern.test(s)); });
这符合您想要的结果:
var test = [ "==This Would Match==", "===I Like My Cats===", "====Number Of Equals Signs Does Not Matter===", "=====Nor Does Line Length Etc.=====", "==This would not regardless of its length==", "===Nor would this match, etc===" ] var reg = /=*([AZ]\\w*\\W*)+=*/g; console.log(test.map(t => t.match(reg) == t));
试试这个正则表达式:
^=*[A-Z][^ ]*( [A-Z][^ ]*)*=*$
它允许任意数量(包括 0)的=
符号在任一侧,并要求每个单词以大写字母开头。
*
量词表示 0 次或多次。
[^ ]
是一个否定字符类,这意味着它匹配除空格之外的任何内容。
您可以在此处在线试用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.