当前位置:网站首页>正则表达式
正则表达式
2022-07-26 19:19:00 【代码老祖】
正则表达式
【老师】扬州教学主管-曾老师 9:24:32
^[a-zA-Z0-9_-][email protected][a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$
【老师】扬州教学主管-曾老师 9:24:49
^1(3[0-9]|5[0-3,5-9]|7[1-3,5-8]|8[0-9])\d{8}$
【老师】扬州教学主管-曾老师 9:24:57
^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$
【老师】扬州教学主管-曾老师 9:25:05
^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[[email protected]#$%^&*? ]).*$

规则字符串
密码 :长度不能少于8位,包含大小写,数字,特殊符号
手机号码 :138 139 158 159 170 189……后8位任意
邮箱 : [email protected]
身份证号码 : xxxxxxYYYYMMDDxxxx
怎么写正则
正则是如何校验的
符合一定规则的字符串。
常见规则
A:字符
x 字符 x。举例:'a'表示字符a
\\ 反斜线字符 表示\。
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
B:字符类 ,匹配符[]
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)
[0-9] 0到9的字符都包括
C:预定义字符类
. 任何字符。我的就是.字符本身,怎么表示呢? \.
\d 数字:[0-9]
\w 单词字符:[a-zA-Z_0-9]
在正则表达式里面组成单词的东西必须有这些东西组成
"http://www.baidu.com" ^[http] [com]$
D:边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
就是不是单词字符的地方。
举例:hello world?haha;xixi
在正则表达式中,如果直接给出字符,就是精确匹配。用\d可以匹配一个数字,\w可以匹配一个字母或数字,所以:
'00\d'可以匹配'007',但无法匹配'00A';'\d\d\d'可以匹配'010';'\w\w'可以匹配'js';
.可以匹配任意字符,所以:
'js.'可以匹配'jsp'、'jss'、'js!'等等。
要匹配变长的字符,在正则表达式中,用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n-m个字符:
来看一个复杂的例子:\d{3}\s+\d{3,8}。
我们来从左到右解读一下:
\d{3}表示匹配3个数字,例如'010';\s可以匹配一个空格(也包括Tab等空白符),所以\s+表示至少有一个空格,例如匹配' ','\t\t'等;\d{3,8}表示3-8个数字,例如'1234567'。
综合起来,上面的正则表达式可以匹配以任意个空格隔开的带区号的电话号码。
如果要匹配'010-12345'这样的号码呢?由于'-'是特殊字符,在正则表达式中,要用'\'转义,所以,上面的正则是\d{3}\-\d{3,8}。
进阶
要做更精确地匹配,可以用[]表示范围,比如:
[0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线;[0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如'a100','0_Z','js2015'等等;[a-zA-Z\_\$][0-9a-zA-Z\_\$]*可以匹配由字母或下划线、$开头,后接任意个由一个数字、字母或者下划线、$组成的字符串,也就是JavaScript允许的变量名;[a-zA-Z\_\$][0-9a-zA-Z\_\$]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)。
A|B可以匹配A或B,所以(J|j)ava(S|s)cript可以匹配'JavaScript'、'Javascript'、'javaScript'或者'javascript'。
^表示行的开头,^\d表示必须以数字开头。
$表示行的结束,\d$表示必须以数字结束。
你可能注意到了,js也可以匹配'jsp',但是加上^js$就变成了整行匹配,就只能匹配'js'了。
E:Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
写一个测试,输入手机号码判断是否符合要求。
public class RegexDemo {
public static void main(String[] args) {
//从键盘输入5-10位数字,不能以0开头
Scanner scanner = new Scanner(System.in);
System.out.println("请输入5-10为数字");
String str = scanner.next();
//创建正则对象
String regex = "[1-9][0-9]{4,9}";
boolean result = str.matches(regex);
if (result){
System.out.println("你输入的内容符合要求");
}else {
System.out.println("不符合要求");
}
}
}
写一个测试,让用户输入一个手机号码,然后判断用户输入的手机号码是否符合规则
public class RegexDemo {
public static void main(String[] args) {
//从键盘输入5-10位数字,不能以0开头
Scanner scanner = new Scanner(System.in);
System.out.println("请输入手机号");
String str = scanner.next();
//创建正则对象
String regex = "1[3-9]\\d{9}";
boolean result = str.matches(regex);
if (result){
System.out.println("你输入的内容符合要求");
}else {
System.out.println("不符合要求");
}
}
}
邮箱的正则表达式匹配
[email protected]
[email protected]
[email protected]
[email protected]
public class RegexDemo {
public static void main(String[] args) {
//从键盘输入5-10位数字,不能以0开头
Scanner scanner = new Scanner(System.in);
System.out.println("请输入邮箱");
String str = scanner.next();
//创建正则对象
String regex = "\\[email protected]\\w{2,8}(.\\w{2,3})+";
boolean result = str.matches(regex);
if (result){
System.out.println("你输入的内容符合要求");
}else {
System.out.println("不符合要求");
}
}
}
边栏推荐
- 负载均衡的使用
- 静音台式风扇芯片-DLTAP703SD-杰力科创
- 金仓数据库 KingbaseES SQL 语言参考手册 (19. SQL语句: DROP TABLE 到 LOAD)
- 【ffmpeg】给视频文件添加时间戳 汇总
- Analysis of interface testing
- 金仓数据库 KingbaseES SQL 语言参考手册 (18. SQL语句: DROP MATERIALIZED VIEW 到 DROP SYNONYM)
- 2022年下半年(软考高级)信息系统项目管理师报名条件
- 金仓数据库 KingbaseES SQL 语言参考手册 (20. SQL语句: MERGE 到 VALUES)
- Leetcode daily practice - 189. Rotation array
- 事务回滚,同时记录异常信息
猜你喜欢
随机推荐
金仓数据库 KingbaseES SQL 语言参考手册 (18. SQL语句: DROP MATERIALIZED VIEW 到 DROP SYNONYM)
Leetcode daily practice - 27. Remove elements
.NET GC工作流程
Overview of canvas
Method of replacing Chinese characters with PHP
Canvas graphics
Kingbasees SQL language reference manual of Jincang database (19. SQL statement: drop table to load)
JWT 实现登录认证 + Token 自动续期方案,这才是正确的使用姿势!
[internship experience] exception handling and URL result response data processing
金仓数据库 KingbaseES SQL 语言参考手册 (13. SQL语句:ALTER SYNONYM 到 COMMENT)
Codeforces Round #810 (Div. 2)(A~C)
LeetCode_回溯_中等_40.组合总和 II
【Pytorch基础】torch.stack()函数解析
These 22 drawing (visualization) methods are very important and worth collecting!
Solution to the third game of 2022 Niuke multi school league
事务回滚,同时记录异常信息
C # use the default transformation method
客户案例|生学教育依托观测云打造可观测智慧教育新生态
C#异步编程看这篇就够了
Kingbasees SQL language reference manual of Jincang database (20. SQL statements: merge to values)

![[internship experience] exception handling and URL result response data processing](/img/ed/05622fad0d3d8dcf17ce7069340669.jpg)







