正則表達式確定重複出現,可能要匹配一个单词或一组数字,一个单词有若干个字母组成,一组数字有若干个单数组成。跟在字符或字符簇后面的花括号({})用来确定前面的內容的重复出现的次数。
字符簇 |
描述 |
^[a-zA-Z_]$ |
所有的字母和下劃線 |
^[[:alpha:]]{3}$ |
所有的3個字母的單詞 |
^a$ |
字母a |
^a{4}$ |
aaaa |
^a{2,4}$ |
aa,aaa或aaaa |
^a{1,3}$ |
a,aa或aaa |
^a{2,}$ |
包含多于兩個a的字符串 |
^a{2,} |
如:aardvark和aaab,但apple不行 |
a{2,} |
如:baad和aaa,但Nantucket不行 |
\t{2} |
兩個制表符 |
.{2} |
所有的兩個字符 |
這些例子描述了花括號的三種不同的用法。一個數字 {x} 的意思是前面的字符或字符簇只出現x次 ;一個數字加逗號 {x,} 的意思是前面的內容出现x或更多的次数 ;兩個數字用逗號分隔的數字 {x,y} 表示 前面的內容至少出现x次,但不超过y次。我們可以把模式擴展到更多的單詞或數字:
^[a-zA-Z0-9_]{1,}$ // 所有包含一个以上的字母、数字或下划线的字符串
^[1-9][0-9]{0,}$ // 所有的正整数
^\-{0,1}[0-9]{1,}$ // 所有的整数
^[-]?[0-9]+\.?[0-9]+$ // 所有的浮点数
最后一个例子不太好理解,是吗?这么看吧:以一个可选的负号 ([-]?) 开头 (^)、跟著1個或更多的數字([0-9]+)、和一個小數點(\.)再跟上1個或多個數字([0-9]+),並且後面沒有其他任何東西($)。下面你將知道能夠使用的更爲簡單的方法。
特殊字符 ? 與 {0,1} 是相等的,它們都代表著: 0个或1个前面的內容 或 前面的內容是可选的 。所以剛才的例子可以簡化爲:
^\-?[0-9]{1,}\.?[0-9]{1,}$
特殊字符 * 與 {0,} 是相等的,它們都代表著 0 个或多个前面的內容 。最後,字符 + 與 {1,} 是相等的,表示 1 个或多个前面的內容 ,所以上面的4個例子可以寫成:
^[a-zA-Z0-9_]+$ // 所有包含一个以上的字母、数字或下划线的字符串
^[1-9][0-9]*$ // 所有的正整数
^\-?[0-9]+$ // 所有的整数
^[-]?[0-9]+(\.[0-9]+)?$ // 所有的浮点数