正则表达式
正则表达式(Regular Expression)
特殊字符(Special Characters)
正则表达式中一些字符具有特殊的含义,它们用于表示一类字符或者进行匹配操作。例如:
- \d:匹配任意数字。
- \w:匹配任意字母、数字、或下划线。
- \s:匹配任意空白字符。
- .:匹配除换行符外的任意单个字符。
字符类(Character Classes)
使用方括号[]来定义一组可匹配的字符,例如[aeiou]表示匹配任意一个元音字母。
使用方括号()来定义一组可匹配的字符,例如(aeiou)表示匹配字符串"aeiou"。
重复次数(Repetitions)
使用限定符来表示字符或者字符类的重复次数。例如:
- *:匹配前面的字符零次或多次。
- +:匹配前面的字符一次或多次。
- ?:匹配前面的字符零次或一次。
- {n}:匹配前面的字符恰好 n 次。
- {n,}:匹配前面的字符至少 n 次。
- {n,m}:匹配前面的字符至少 n 次,但不超过 m 次。
边界匹配(Anchors)
用于指定匹配的位置,例如:
- ^:匹配字符串的开头。
- $:匹配字符串的结尾。
- \b:匹配单词边界。
- \B:匹配非单词边界。
例子
匹配IP地址
1 | ^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$ |
这个表达式的组成部分解释如下:
- 25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]:这个部分用于匹配0到255的数字。具体来说,它匹配250-255 (25[0-5]), 200-249 (2[0-4][0-9]), 100-199 (1[0-9][0-9]), 和0-99 ([1-9]?[0-9])。
- (……).:这个部分用于匹配三个点加数字的模式,比如”192.”。
- {3}:这个部分表示前面的模式会重复三次,用于匹配IP地址的前三段。
- 最后的部分: (25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]) 同样用于匹配0到255的数字,对应IP地址的最后一段
匹配yyyy-mm-dd格式的日期
1 | ^((19|20)\d\d)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$ |
((19|20)\d\d) : 这部分用于匹配年份,可以匹配从1900到2099的年份。在这部分,“\d” 是一个占位符,代表任何数字。
-(0[1-9]|1[012]) : 这部分用于匹配月份。可以匹配从 “01” 到 “09” 以及 “10”, “11”, “12” 这三个月份。
-(0[1-9]|[12][0-9]|3[01]) : 这部分用于匹配日期。可以匹配从 “01” 到 “09”,”10” 到 “19”, “20” 到 “29”,以及 “30”, “31” 这两个日期。
但是这个正则表达式有一个限制,它并没有在2月份考虑29天(对于闰年而言),并且它也会匹配那些只有30天的月份的31日(如4月、6月、9月和11月)。要完全校验一个日期的正确性,可能最好的方法是使用日期解析函数而不是正则表达式
FAQ
- 如何使用vscode搜索中的正则表达式
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.