这些例子描写了花括号的三种差异的用法。一个数字,{x}的意思是“前面的字符或字符簇只呈现x次”;一个数字加逗号,{x,}的意思是“前面的内容呈现x或更多的次数”;两个用逗号脱离的数字,{x,y}暗示“前面的内容至少呈现x次,但不高出y次”。我们可以把模式扩展到更多的单词或数字:
^[a-zA-Z0-9_]{1,}$ //所有包括一个以上的字母、数字或下划线的字符串
^[0-9]{1,}$ //所有的正数
^/-{0,1}[0-9]{1,}$ //所有的整数
^/-{0,1}[0-9]{0,}/.{0,1}[0-9]{0,}$ //所有的小数
最后一个例子不太好领略,是吗?这么看吧:与所有以一个可选的负号(/-{0,1})开头(^)、随着0个或更多的数字([0-9]{0,})、和一个可选的小数点(/.{0,1})再跟上0个或多个数字([0-9]{0,}),而且没有其他任何对象($)。下面你将知道可以或许利用的更为简朴的要领。
非凡字符"?"与{0,1}是相等的,它们都代表着:“0个或1个前面的内容”或“前面的内容是可选的”。所以适才的例子可以简化为:
^/-?[0-9]{0,}/.?[0-9]{0,}$
非凡字符"*"与{0,}是相等的,它们都代表着“0个或多个前面的内容”。最后,字符"+"与 {1,}是相等的,暗示“1个或多个前面的内容”,所以上面的4个例子可以写成:
^[a-zA-Z0-9_]+$ //所有包括一个以上的字母、数字或下划线的字符串
^[0-9]+$ //所有的正数
^/-?[0-9]+$ //所有的整数
^/-?[0-9]*/.?[0-9]*$ //所有的小数
虽然这并不能从技能上低落正规表达式的巨大性,但可以使它们更容易阅读。