正则表达式匹配所有以大写字母开头的单词

时间:2018-03-21 15:57:25

标签: javascript regex

我正在尝试创建一个正则表达式模式(在JavaScript中),该模式匹配所有单词以大写字母开头的行,而不管长度如何。它还必须考虑到任何一方的任何数量的等号(' =')。

例如
匹配:
==这会匹配==
===我喜欢我的猫===
====等号的数量无关紧要===
=====线路长度等也没有=====

但是
= =这不管它的长度是多少==
===这也不会匹配,等等===

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

您可以匹配=+两侧的一个或多个等号。

匹配以大写字母开头的单词可以以[A-Z]开头,后跟\w一次或多次。如果您想匹配的字符多于\w,则可以创建一个字符类[\w.]来添加匹配的点。例如。

此模式在等号之间匹配为零或多次,以一个以大写字符开头,后跟一个空格的单词结束,并以一个以大写字母开头的单词结束:

^=+(?:[A-Z]\w* )*(?:[A-Z][\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 = /^=+(?:[A-Z]\w* )*(?:[A-Z][\w.]+)=+$/;

strings.forEach((s) => {
  console.log(s + " ==> " + pattern.test(s));
});

答案 1 :(得分:0)

这符合您想要的结果:



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 = /=*([A-Z]\w*\W*)+=*/g;

console.log(test.map(t => t.match(reg) == t));




答案 2 :(得分:-1)

试试这个正则表达式:

^=*[A-Z][^ ]*( [A-Z][^ ]*)*=*$

它允许任意一侧的任何数字(包括0)=符号,并要求每个单词以大写字母开头。

*量词表示0次或更多次。

[^ ]是一个否定的字符类,意味着它匹配除空格之外的任何内容。

您可以在线试用here