在开发项目时,很多表单输入需要做校验,为了方便以后随时可查,今天针对这块内容作个开发笔记,记录一些开发项目中所遇到的各种正则表达式
一、校验数字表达式
- 数字:
/^[0-9]*$/ - n位数字:
/^\d{n}$/ - 至少n位数字:
/^\d{n,}$/ - m-n位的数字:
/^\d{m,n}$/ - 零和非零开头的数字:
/^(0|[1-9][0-9]*)$/ - 非零开头的最多带两位小数的数字:
/^([1-9][0-9]*)+(.[0-9]{1,2})?$/ - 带1-2位小数的正数或负数:
/^(\-)?\d+(\.\d{1,2})?$/ - 正数、负数、和小数:
/^(\-|\+)?\d+(\.\d+)?$/ - 有两位小数的正实数:
/^[0-9]+(.[0-9]{2})?$/ - 有1~3位小数的正实数:
/^[0-9]+(.[0-9]{1,3})?$/ - 非零的正整数:
/^[1-9]\d*$/ 或 /^([1-9][0-9]*){1,3}$/ 或 /^\+?[1-9][0-9]*$/ - 非零的负整数:
/^\-[1-9][]0-9"*$/ 或 /^-[1-9]\d*$/ - 非负整数:
/^\d+$/ 或 /^[1-9]\d*|0$/ - 非正整数:
/^-[1-9]\d*|0$/ 或 /^((-\d+)|(0+))$/ - 浮点数:
/^(-?\d+)(.\d+)?$/ - 非负浮点数:
/^\d+(\.\d+)?$/ 或 /^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$/ - 非正浮点数:
/^((-\d+(\.\d+)?)|(0+(\.0+)?))$/ 或 /^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$/ - 正浮点数:
/^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$/ 或 /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/ - 负浮点数:
/^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$/ - 浮点数:
/^(-?\d+)(\.\d+)?$/ 或 /^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$/ - md5值 :
/^([a-f\d]{32}|[A-F\d]{32})$/ - base64值:
/^\s*data:(?:[a-z]+/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=-._~:@/?%\s]*?)\s*$/i
二、校验字符表达式
- 汉字:
/^[\u4e00-\u9fa5]{0,}$/ - 英文和数字:
/^[A-Za-z0-9]+$/ 或 /^[A-Za-z0-9]{4,40}$/ - 长度为3-20的所有字符:
/^.{3,20}$/ - 由26个英文字母组成的字符串:
/^[A-Za-z]+$/ - 由26个大写英文字母组成的字符串:
/^[A-Z]+$/ - 由26个小写英文字母组成的字符串:
/^[a-z]+$/ - 由数字、26个英文字母或者下划线组成的字符串:
/^\w+$/ 或 /^\w{3,20}$/ - 中文、英文、数字包括下划线:
/^[\u4E00-\u9FA5A-Za-z0-9_]+$/ - 中文、英文、数字但不包括下划线等符号:
/^[\u4E00-\u9FA5A-Za-z0-9]+$/ 或 /^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$/ - 可以输入含有^%&',;=?\"等字符:`/[^%&',;=?\x22]+ 12/ `
- 禁止输入含有~的字符:
/[^~\x22]+/
三、特殊场景下的表达式
- Email地址:
/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/ - 域名:
/[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?/ - InternetURL:
/[a-zA-z]+://[^\s]*/ 或 /^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$/ - 校验IP-v4地址:
/\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/ - 校验IP-v6地址:
/(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/ - 电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):
/^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$/ - 手机号码:
/^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$/ - 身份证号(15位、18位数字):
/^\d{15}|\d{18}$/ - 银行卡号(公、私账户):
/^[1-9]\d{9,29}$/ - 金额校验,精确到2位小数:
/^[0-9]+(.[0-9]{2})?$/ - 车牌号:
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/ - 微信号:
/^[a-zA-Z][-_a-zA-Z0-9]{5,19}$/ - QQ 号:
/^[1-9][0-9]{4,10}$/ - 一年 12 个月((01~09 或 1~12)):
/^(0?[1-9]|1[0-2])$/ - 一个月 31 天(01~09 或 1~31):
/^((0?[1-9])|((1|2)[0-9])|30|31)$/ - 有 31 天的月份:
/^(0?[13578]|1[02])$/ - 有 30 天月的份:
/(0[469]|11)-(0[1-9]|[12][0-9]|30)/ - 闰年:
/^(((19|20)([13579][26]|[2468][048]|0[48]))|(2000))$/