正则校验使用
今天没有学习,复习了一下正则校验的使用
编写上位机,少不了通过各个控件进行输入参数操作。在大多数情况下对于输入的参数都是有合法的范围值。
如果参数没有特定的格式,那么我们可以用if()条件语句来加以限制,但是一些特殊的情况下,用自己编写条件就太过于麻烦了。例如IP地址的输入。
那么正则校验究竟怎么用?我个人用过不少,但是每次用后,过一段时间就会忘记规则。今天再次重温,决定还是要记录一下。
记录几个常用的正则校验
具体如何得出请看后续详解
IP地址的正则校验公式:
^((25[0-5]|2[0-4]\\d|[1]{1}\\d{1}\\d{1}|[1-9]{1}\\d{1}|\\d{1})($|(?!\\.$)\\.)){4}$
或
^((25[0-5]|2[0-4]\\d|[1]{1}\\d{1}\\d{1}|[1-9]{1}\\d{1}|\\d{1})($|(?!\\.$)\\.)){4}$
或
((25[0-5]|2[0-4][0-9]|[0-1]\d\d)\.){3}(25[0-5]|2[0-4][0-9]|[0-1]\d\d)
只允许输入数字
"^[0-9]*$"
只允许最多输入n个数字
"^\d{n}$"
只允许最少输入n个数字
"^\d{n,}$"
正则校验的表达规则
正则校验常用场景
- 验证
- 搜索/替换
正则表达式用于验证时,需要在表达式的开始和结束分别添加’^‘和’$‘字符。用来匹配待验证的字符串。
搜索或替换需要前后加’\b’还是’^‘和’$'字符需要视情况而定。具体如何,还不太清楚。有了解的小伙伴欢迎评论区留言。
正则校验的元字符
元字符 | 说明 |
---|---|
‘.’ | 配除换行符以外的任意字符 |
‘\w’ | 匹配字母或数字或下划线或汉字 |
‘\s’ | 匹配任意的空白符(包括但不限于空格,制表符,换页符等) |
‘\d’ | 匹配数字 |
‘\b’ | 匹配单词的开始或结束 |
‘^’ | 匹配字符串的开始 |
‘$’ | 匹配字符串的结束 |
看到这里应该知道为什么在校验字符串时需要添加’^'和‘$'字符了。
元字符用来匹配合法的数据,那么怎么用来匹配非法数据(匹配除某些数据外的数据)呢?
这里就要用到反义字符了
正则校验的反义字符
反义字符 | 说明 |
---|---|
‘\W’ | 匹配任意非字母,数字,下划线,汉字的字符 |
‘\S’ | 匹配任意不是空白符的字符(包括但不限于空格,制表符,换页符等) |
‘\D’ | 匹配任意非数字的字符 |
‘\B’ | 匹配不是单词开头或结束的位置 |
‘[^x]’ | 匹配除了x以外的任意字符 |
‘[^aeiou]’ | 匹配除了aeiou这几个字母以外的任意字符 |
限定字符
在正则校验中,少不了需要对某些条件做出限定(非字符输入的限定)
限定字符 | 说明 |
---|---|
‘*’ | 重复零次或更多次 (常用来搜索替换) |
‘+’ | 重复一次或更多次 |
‘?’ | 重复零次或一次 |
‘{n}’ | 重复n次(最多重复几次PS:可用来限定长度) |
‘{n,}’ | 最少重复n次(最多重复几次PS:可用来限定长度) |
‘{m,n}’ | 重复n-m次(最多重复几次PS:可用来限定长度) |
转义字符
在使用中,如果遇见需要校验的字符和元字符或反义字符有冲突怎么办?直接输入就会变成校验的元字符含义。这时就需要用到我们的转义字符’\‘出场了。
故名思意:转义就是转变含义。
如果我们需要校验输入数据含有小数点(.)那么可以输入’\.’
如果我们需要校验输入数据含有’*‘特殊字符(.)那么可以输入’\ *’
字符分组
当有多种条件时,为了使程序可读性变得更强,也为了更容易写出合法的正则校验公式,此时就用到字符分组。
对字符进行分组处理需要用到()来进行
例如:
^(\d)({3})$
条件一:只允许输入数字
条件二:最多输入三个数字
字符分支
当有多种条件,而条件又无法连贯,就需要用到字符分支字符’|’。对于编程有一点基础的应该很好理解,这个字符代表的是“或”的含义。
例如:
^([1]\d{3})|([a-z]{3})$
条件解析:
只能输入以1开头的四位数字或输入a-z的三位字符
结语
看到这里,想必大家对于开头的几个常用的正则表达式为何那么写已经能够理解了。甚至可以自己动手写出不同用途的正则表达式了。
此为个人学习理解所以,如有错误,还望指正。