繁体   English   中英

正则表达式匹配行,所有单词都以大写开头

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM