我正在尝试创建一个正则表达式模式(在JavaScript中),该模式匹配所有单词以大写字母开头的行,而不管长度如何。它还必须考虑到任何一方的任何数量的等号(' =')。
例如
匹配:
==这会匹配==
===我喜欢我的猫===
====等号的数量无关紧要===
=====线路长度等也没有=====
但是
= =这不管它的长度是多少==
===这也不会匹配,等等===
非常感谢任何帮助。
答案 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。