我正在創建一個 QLineEditor 以手動輸入十六進制格式的顏色。我想設定一個驗證器來檢查輸入顏色是否是純 HUE 顏色。
所有色調顏色都遵循此模式,即 X 任何十六進制字符 [從 0-9 或 AF]:
#FF00XX
#00FFXX
#00XXFF
#XX00FF
#XXFF00
#FFXX00
我設法檢查了正確的 HEX 顏色值:^#([A-Fa-f0-9]{6})$,但我不知道如何擴展驗證器以僅接受色調顏色。
有任何想法嗎?
uj5u.com熱心網友回復:
你想要的模式是^#(?:00(?:FFXX|XXFF)|FF(?:00XX|XX00)|XX(?:00FF|FF00))$.
如果您想XX成為任何十六進制字符,請替換為[a-fA-F0-9]{2}. 然后,正則運算式看起來像
^#(?:00(?:FF[a-fA-F0-9]{2}|[a-fA-F0-9]{2}FF)|FF(?:00[a-fA-F0-9]{2}|[a-fA-F0-9]{2}00)|[a-fA-F0-9]{2}(?:00FF|FF00))$
請參閱正則運算式演示。
如果不想XX匹配00和FF,則替換XX為(?![fF]{2}|00)[a-fA-F0-9]{2}。然后,正則運算式看起來像
^#(?:00(?:FF(?![fF]{2}|00)[a-fA-F0-9]{2}|(?![fF]{2}|00)[a-fA-F0-9]{2}FF)|FF(?:00(?![fF]{2}|00)[a-fA-F0-9]{2}|(?![fF]{2}|00)[a-fA-F0-9]{2}00)|(?![fF]{2}|00)[a-fA-F0-9]{2}(?:00FF|FF00))$
請參閱正則運算式演示。
該(?![fF]{2}|00)[a-fA-F0-9]{2}部分匹配任何兩個不等于FF或00(不區分大小寫)的十六進制字符。
uj5u.com熱心網友回復:
最簡單的方法是只使用管道運算子來覆寫所有六種情況:
00[A-Fa-f0-9]{2}FF|00FF[A-Fa-f0-9]{2}|FF00[A-Fa-f0-9]{2}|FF[A-Fa-f0-9]{2}00|[A-Fa-f0-9]{2}00FF|[A-Fa-f0-9]{2}FF00
演示
顯然,這種模式[A-Fa-f0-9]{2}重復了幾次。要去除冗余,您可以將其保存在一個單獨的變數中,并使用字串格式來替換它并形成如上所示的模式。
uj5u.com熱心網友回復:
如果只有 6 個案例,您可以使用布爾 OR ( |)撰寫這些案例
(?<=#00FF|#FF00)[A-Fa-f0-9]{2}|[A-Fa-f0-9]{2}(?=00FF|FF00)|(?<=#00)[A-Fa-f0-9]{2}(?=FF)|(?<=#FF)[A-Fa-f0-9]{2}(?=00)
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/383641.html
上一篇:如何將一個字串中的2個數字與PHP中字串外的第3個數字相乘?
下一篇:在許多分隔符之后拆分串列元素
