正则表达式是一种用于描述文本模式的工具。它可以用来匹配、查找或替换字符串中符合一定规则的文本。正则表达式由普通字符和元字符组成,用来描述一个或多个字符串的特征。在不同的编程语言和文本编辑器中,正则表达式的语法略有不同。
正则表达式可以检查一个字符串是否符合某种规范,同时也可以从一个字符串中提取符合规范的子串。例如,一个电话号码通常由若干数字和符号(如 +、-、(、) 等)组成,可以使用正则表达式来匹配符合格式的电话号码。下面我来分享一下日常用的表达式。
- 匹配手机号:
- /^1[3456789]d{9}$/ (匹配以1开头,第二位数字为3-9,后面跟9个数字的手机号码)
- 例如:13712345678、15987654321
- 匹配邮箱:
- /^w+([-+.]w+)@w+([-.]w+).w+([-.]w+)$/ (匹配常见邮箱格式的正则表达式)
- 例如:12345678@qq.com。
- 匹配身份证号:
- /(^d{15})|(^d{18})|(^d{17}(d|X|x)$)/ (匹配15位或18位身份证号码)
- 例如:110101199001011234、11010119900101123x
- 匹配URL地址:
- /(http[s]?|ftp)://([^/s]+/)(.*)/i (匹配URL地址)
- 例如:https://www.google.com/search?q=regex、http://www.baidu.com
- 匹配日期格式:
- /d{4}-d{1,2}-d{1,2}/ (匹配"YYYY-MM-DD"格式的日期)
- 例如:2023-04-10、2019-8-8
- 匹配IP地址:
- /d{1,3}.d{1,3}.d{1,3}.d{1,3}/ (匹配IP地址)
- 例如:192.168.1.1、127.0.0.1
- 匹配邮政编码:
- /[1-9]d{5}(?!d)/ (匹配六位邮政编码)
- 例如:100101、518000
- 匹配中文字符:
- 匹配英文字母:
- /[a-zA-Z]/ (匹配英文字母)
- 例如:hello、world
- 匹配空白行:
- 匹配QQ号:
- /[1-9][0-9]{4,}/ (匹配有效的QQ号,即第一位不能为0,至少为5位数字)
- 例如:123456789、10000
- 匹配微信号:
- /^a-zA-Z+$/ (匹配微信号,以字母开头,可使用字母、数字、减号、下划线,长度在6~20个字符之间)
- 例如:My_WeChat、myweixin123
- 匹配汉字、字母、数字及下划线:
- /^[一-龥_a-zA-Z0-9]+$/ (匹配汉字、字母、数字及下划线)
- 例如:中文abc123、123_abc
- 匹配小数点后两位的数字:
- /^d+(.d{0,2})?$/ (匹配小数点后两位的数字)
- 例如:123.45、100
- 匹配正整数:
- /^[1-9]d*$/ (匹配正整数)
- 例如:1、1234
- 匹配负整数:
- /^-[1-9]d*$/ (匹配负整数)
- 例如:-1、-1234
- 匹配非负整数(正整数 + 0):
- 匹配非正整数(负整数 + 0):
- /^(-[1-9]d*|0)$/ (匹配非正整数)
- 例如:-1、0
- 匹配HTML标记:
- /<(.)>.1>|<(.*) />/ (匹配HTML标记)
- 例如:百度一下、
- 匹配密码强度:
- /(?=.[A-Z])(?=.[a-z])(?=.[0-9])(?=.[W_]).{8,}/ (匹配包含大小写字母、数字、特殊字符的强密码,长度不少于8位)
- 例如:Passwd_123、Hello@world1
21.匹配24小时制的时间:
- /^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/ (匹配24小时制的时间)
- 例如:00:00、23:59
22.匹配12小时制的时间:
- /^(0?[1-9]|1[0-2]):[0-5]0-9$/i (匹配12小时制的时间)
- 例如:11:30 am、12:45 PM
23.匹配时间段:
- /^(0?[0-9]|1[0-2])(:[0-5][0-9])?s*(am|pm)s*-?s*(0?[0-9]|1[0-2])(:[0-5][0-9])?s*(am|pm)$/i (匹配时间段)
- 例如:10am-12pm、2PM - 4pm
24.匹配日期:
- /^d{4}-d{1,2}-d{1,2}$/ (匹配“YYYY-MM-DD”格式的日期)
- 例如:2023-04-10、2019-8-8
25.匹配时间间隔:
- /^([1-9]|[1-5][0-9]|60)(min|minute|minutes|hour|hours|day|days)$/i (匹配时间间隔)
- 例如:30 minutes、2 hours、1 day
26.匹配某一个小时内的时间:
- /^(0[1-9]|1[0-2]):([0-5][0-9])(am|pm)-(1:dd(am|pm)|1[0-2]:[0-5]0-9)$/i (匹配某一个小时内的时间)
- 例如:10:00am-11:00am、12:30PM-1:15PM
27.匹配整点时间:
- /^(d{1,2})(:00)?(am|pm)?$/i (匹配整点时间)
- 例如:3pm、12:00am、5AM
28.匹配每天定时执行的时间:
- /^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/ (匹配每天定时执行的时间)
- 例如:6:00、14:30、23:59
29.匹配指定分钟后执行的时间:
- /^(?:(?:([01]?d|2[0-3]):([0-5]?d):d+)|(?:d+ second(s)? from now))$/ (匹配指定分钟后执行的时间)
- 例如:10:30:00、15:05:30、20 seconds from now
Cron表达式举例:
0 0 * * *:每天零点开始执行任务。
分别对应“0分、0时、任意日期、任意月份、任意星期几”。
0 */2 * * *:每2小时开始执行任务。
分别对应“0分、任意偶数时、任意日期、任意月份、任意星期几”。
0 0 1 * *:每个月的第一天零时执行任务。
分别对应“0分、0时、第1天、任意月份、任意星期几”。
0 0-8/2 * * *:每天凌晨0点到上午8点之间,每隔2小时执行一次任务。
分别对应“0分、0点到8点之间、任意日期、任意月份、任意星期几”。
0 0 23 ? * 6#3:每月的第三个周六的23点执行任务。
分别对应“0分、23时、任意日期、任意月份、第三个周六”。
整理不易,欢迎大家点赞转发收藏,关注我每天分享运维小知识。