以下是常用的用来匹配数字的正则表达式:
/\D/; # 匹配非数字字符,即如果匹配成功,则目标字符串无数字字符
/^\d+$/; # 匹配不带符号的整数
/^-?\d+$/; # 匹配除带+号以外的整数
/^[+-]?\d+$/; # 匹配整数
/^-?\d+\.?\d*$/; # 匹配不是以.开头的小数
/^-?(?:\d+(?:\.\d*)?|\.\d+)$/; # 匹配小数
/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/; # 匹配浮点数
\D代表非数字字符,\d相反,他们分别还可以以[^0-9]和[0-9]的形式表示。
以组的形式()进行匹配时,如果在括号开头加?:则不会记录匹配数据,否则会以$[1...]($1, $2,$3...)或\[1...](和sed一样)的形式对组里匹配的数据,如果进行匹配的数据量大的话,那么这样将极大的降低内存的使用。
通常以?=(匹配)和?!(不匹配)进行零宽断言,即以这两种形式匹配的数据不会记录在匹配数据$&中。
下面的链接详细介绍了perl正则表达式