Qt工作笔记-QLineEdit用正则限制文本框的输入内容+正则表达式语法
?
簡單說明一下這幾個正則表達式:
^(-?[0]|-?[1-9][0-9]{0,5})(?:\.\d{1,4})?$|(^\t?$)
(^-?180$)|(^-?1[0-7]\d$)|(^-?[1-9]\d$)|(^-?[1-9]$)|^0$
^-?(180|1?[0-7]?\d(\.\d+)?)$
^-?(180|1?[0-7]?\d(\.\d{1,4})?)$
^-?(90|[1-8]?\d(\.\d{1,4})?)$
正則表達式語法:
?. :匹配任何單個字符。例如正則表達式“b.g”能匹配如下字符串:“big”、“bug”、“b g”,但是不匹配“buug”,“b..g”可以匹配“buug”。?
?
[ ] :匹配括號中的任何一個字符。例如正則表達式“b[aui]g”匹配bug、big和bag,但是不匹配beg、baug。可以在括號中使用連字符“-”來指定字符的區間來簡化表示,例如正則表達式[0-9]可以匹配任何數字字符,這樣正則表達式“a[0-9]c”等價于“a[0123456789]c”就可以匹配“a0c”、“a1c”、“a2c”等字符串;還可以制定多個區間,例如“[A-Za-z]”可以匹配任何大小寫字母,“[A-Za-z0-9]”可以匹配任何的大小寫字母或者數字。
?
( ) :將 () 之間括起來的表達式定義為“組”(group),并且將匹配這個表達式的字符保存到一個臨時區域,這個元字符在字符串提取的時候非常有用。把一些字符表示為一個整體。改變優先級、定義提取組兩個作用。
?
| :將兩個匹配條件進行邏輯“或”運算。'z|food' 能匹配"z" 或 "food"。'(z|f)ood' 則匹配"zood" 或 "food"。
?
*:匹配0至多個在它之前的子表達式,和通配符*沒關系。例如正則表達式“zo*”能匹配 “z” 、“zo”以及 “zoo”;因此“.*”意味著能夠匹配任意字符串。"z(b|c)*"→zb、zbc、zcb、zccc、zbbbccc。"z(ab)*"能匹配z、zab、zabab(用括號改變優先級)。
?
+ :匹配前面的子表達式一次或多次,和*對比(0到多次)。例如正則表達式9+匹配9、99、999等。 “zo+”能匹配 “zo”以及 “zoo” ,不能匹配"z"。
?
? :匹配前面的子表達式零次或一次。例如,"do(es)?" 可以匹配 "do" 或"does" 。一般用來匹配“可選部分”。
?
{n} :匹配確定的 n 次。"zo{2}"→zoo。例如,“e{2}” 不能匹配“bed”中的“e”,但是能匹配“seed”中的兩個“e”。
?
{n,} :至少匹配n次。例如,“e{2,}”不能匹配“bed”中的“e”,但能匹配 “seeeeeeeed”中的所有“e”。
?
{n,m} :最少匹配 n 次且最多匹配 m 次。“e{1,3}”將匹配“seeeeeeeed”中的前三個“e”。
^(shift+6) :匹配一行的開始。例如正則表達式“^regex”能夠匹配字符串“regex我會用”的開始,但是不能匹配“我會用regex”。
?
^另外一種意思:非!(暫時不用理解)
?
$ :匹配行結束符。例如正則表達式“浮云$” 能夠匹配字符串“一切都是浮云”的末尾,但是不能匹配字符串“浮云呀”
?
?
\d:代表一個數字,等同于[0-9]
\D:代表非數字,等同于[^0-9]
\s:代表換行符、Tab制表符等空白字符
\S:代表非空白字符
\w:匹配字母或數字或下劃線或漢字,即能組成單詞的字符
\W:非\w ,等同于[^\w]
d:digital;s:space、w:word。大寫就是“非”
?
Regex.IsMatch("bbbbg","^b.*g$");
Regex.IsMatch("bg","^b.*g $ ");
Regex.IsMatch("gege","^b.*g $ ");
?
"^\d{3,4}\-?\d+$"表示被匹配的字符序列應該是由三至四位數字組成,由于長途區號的連字符“-”可有可無,所以這里使用“?”元字符進行說明。由于連字符“-”在正則表達式中有特殊含義(表示范圍,比如[0-9]),所以要對其進行轉義。
?
[]括號中的任意字符,\w字母、數字、下劃線,+一到多個。由于.在正則表達式中有特殊的含義,因此對于真正想表達“.”則需要轉移“\.”。先想正則表達式是語言無關的。
+、*的匹配默認是貪婪(greedy)的:盡可能多的匹配,直到“再貪婪一點兒”其后的匹配模式就沒法匹配為止。
?
在+、*后添加?就變成非貪婪模式(? 的另外一個用途):讓其后的匹配模式盡早的匹配。修改成"我是(.+?)。"
?
??? 圖片src[^>]*[^/].(?:jpg|bmp|gif)(?:\"|\')
??? 中文 ^([\u4e00-\u9fa5]+|[a-zA-Z0-9]+)$
??? 網址"\<a.+?href=['""](?!http\:\/\/)(?!mailto\:)(?>foundAnchor>[^'"">]+?)[^>]*?\>"
??? 匹配中文字符的正則表達式:[\u4e00-\u9fa5]
??? 匹配雙字節字符(包括漢字在內):[^\x00-\xff]
??? 匹配空行的正則表達式:\n[\s|]*\r
??? 匹配HTML標記的正則表達式:/<(.*)>.*<\/\1>|<(.*) \/>/
??? 匹配首尾空格的正則表達式:(^\s*)|(\s*$)(像vbscript那樣的trim函數)
??? 匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
??? 匹配網址URL的正則表達式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
總結
以上是生活随笔為你收集整理的Qt工作笔记-QLineEdit用正则限制文本框的输入内容+正则表达式语法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt工作笔记-对setupUi(this
- 下一篇: Qt工作笔记-Qt移植到Linux上时提