欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

re正则表达式_持续学习中

程序员文章站 2022-07-10 08:21:40
...

re正则表达式

项目 价格
. 代表一个任意字符
^ 以字符开头 例如:“^b”以b开头 “^a.*”以a开头后面又任意字符的一个字符串
$ 以字符结尾 例如: “33a.3”以a开头以3结尾 中间又任意多的字符的字符串
* 代表前面的字符可以出现任意多遍 例如:“1*” 1可以出现任意多便 “.*”任意字符出现任意多遍
? 逆贪婪模式 默认一直往右扫,扫到最后一个合适的才退出,例如:”booobb”->匹配“.(b.*b).”有 booob 和 bb 和 booobb 由于 bb 在最后匹配到,返回的是 “bb”,“.?(b.*b).”得到 booobb, 加上“?“,所以就是从左往右,因为后面的那个 匹配串中后面那个b还是贪婪匹配,所以会尽可能多的匹配多的字符,这个时候 加上 “.?(b.?b).“ , 返回的就是 ”booob“ Ps.”()**”会返回括号内的内容
+ 代表出现至少一次 “*”可以一次都不出现
{2} 限定前面字符出现的次数 ”.(b.{2}b).“ 代表bb之间有两个任意字符
{2,} 限定前面字符出现的次数 至少为两次
{2,5} 限定前面字符出现的次数 为2~5次
. 代表一个任意字符
| 或者关系 ”bobby | bobby123“代表匹配字符串为 bobby 或者 bobby123
[ ] 中括号中的字符只要满足任意一个,就可以。“[abcd]ooby123”“[0-9]”代表0~9“[^1]”不等于1 进入“[]”的符号 就没有之前的意义了 既 “[ . ]”就是代表 点号 的意思 而不再是 任意字符 其他字符同理
\s 代表空格、换行、tab缩进等所有的空白 “(你\s好)”->“(你 好)”
\S 代表 只要不是空格都可以
\w 代表等价于[0-9 A-Z a-z ], 也就是A~Z 和 a~z 和 0~9 和 下划线“” 中间的任意一个
\W 非\w所代表的字符 如 空格 [email protected]#$%^&*() 之类
[\u4E00-\u9FA5] 代表一个汉字 这是个固定写法 不能更改 例如:“study in 三峡大学”提取出什么大学, ”.?([\u4R00-\u9FA5]+大学)“ 这里由于前面有其他字符 所以 前面要加上 “.” 又由于又贪婪匹配的原因 会自动取出最小的符合情况的 所以如果不加上”?” 就会取出 “峡大学”, 因此加上 “?” 逆贪婪匹配,取出三峡大学
\d 代表的是数字的意思 例如:“xxx出生于1998年” -> “.(\d{4})年”或者”.?(\d+)年”
\D 代表非数字

前端使用input输入数据的时候,例如

<input type = "text" name = "username" pattern = "[a-zA-Z]{6,12}" required = "required" placeholder = "请输入6到12位字母">
public class test {
    public static void main(String[] args){
        String data = "a";
        String regex = "\\D";
        boolean flag = data.matches(regex);
        System.out.println(flag);
    }
}

通过这个在 servlet 中 判断用户输入是否合法

前端校验的局限性:

优点:
    1. 能够对数据进行初步筛选,减少后台服务器的压力
    2. 使用html5校验,比较简单易用
弊端:
    1. 可以通过一些手段通过前端校验(例如,F12  删除html中的pattern代码,可以绕过)

因此,做数据校验,不能只在前端进行校验,在后台也要进行校验。

相关标签: re