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