簡體   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