java正则表达式详解
js正则表达式是什么,怎么使用呢?不知道的小伙伴来看看小编今天的分享吧!
1、正则表达式简介:
普通方式:var reg=/表达式/附加参数
附件参数:
g:代表可以进行全局匹配。
i:代表不区分大小写匹配。
m:代表可以进行多行匹配。
上面三个参数,可以任意组合,代表复合含义,当然也可以不加参数。
举例:
var reg=/a*b/;
var reg=/abc+f/g;
构造函数方式:var reg=new RegExp(“表达式”,”附加参数”);
举例:
var reg=new RegExp(“a*b”);
var reg=new RegExp(“abc+f”,”g”);
两者区别:
普通方式中的表达式必须是一个常量字符串,而构造函数中的表达式可以是常量字符串,也可以是一个js变量,例如根据用户的输入来作为表达式参数等等:var reg=new RegExp(document.forms[0].exprfiled.value,”g”);
2、正则表达式的操作:
表达式对象(RegExp)方法:
①exec(str),返回str中与表达式相匹配的第一个字符串,而且以数组的形式表现,当然如果表达式中含有捕捉用的小括号,则返回的数组中也可能含有()中的匹配字符串,例如:
var regx=//d+/;
var rs=regx.exec(“3432ddf53”);
返回的rs值为:{3432}
var regx2=new RegExp(“ab(/d+)c”);
var rs2=regx2.exec(“ab234c44”);
返回的rs值为:{ab234c,234}
另外,如果有多个合适的匹配,则第一次执行exec返回一个第一个匹配,此时继续执行exec,则依次返回第二个第三个匹配。例如:
var regx=/user/d/g;
var rs=regx.exec(“ddduser1dsfuser2dd”);
var rs1=regx.exec(“ddduser1dsfuser2dd”);
则rs的值为{user1},rs的值为{rs2},当然注意regx中的g参数是必须的,否则无论exec执行多少次,都返回第一个匹配。后面还有相关内容涉及到对此想象的解释。
②test(str),判断字符串str是否匹配表达式,返回一个布尔值。例如:
var regx=/user/d+/g;
var flag=regx.test(“user12dd”);
flag的值为true。
String对象方法:
①match(expr),返回与expr相匹配的一个字符串数组,如果没有加参数g,则返回第一个匹配,加入参数g则返回所有的匹配
例子:
var regx=/user/d/g;
var str=“user13userddduser345”;
var rs=str.match(regx);
rs的值为:{user1,user3}
②search(expr),返回字符串中与expr相匹配的第一个匹配的index值。
例子:
var regx=/user/d/g;
var str=“user13userddduser345”;
var rs=str.search(regx);
rs的值为:0
③replace(expr,str),将字符串中匹配expr的部分替换为str。另外在replace方法中,str中可以含有一种变量符号$,格式为$n,代表匹配中被记住的第n的匹配字符串(注意小括号可以记忆匹配)。
例子1:
var regx=/user/d/g;
var str=“user13userddduser345”;
var rs=str.replace(regx,”00”);
rs的值为:003userddd0045
例子2:
var regx=/u(se)r/d/g;
var str=“user13userddduser345”;
var rs=str.replace(regx,”$1”);
rs的值为:se3userdddse45
对于replace(expr,str)方法还要特别注意一点,如果expr是一个表达式对象则会进行全局替换(此时表达式必须附加参数g,否则也只是替换第一个匹配),如果expr是一个字符串对象,则只会替换第一个匹配的部分。
例如:
var regx=“user”
var str=“user13userddduser345”;
var rs=str.replace(regx,”00”);
rs的值为: 0013userddduser345
④split(expr),将字符串以匹配expr的部分做分割,返回一个数组,而且表达式是否附加参数g都没有关系,结果是一样的。
例子:
var regx=/user/d/g;
var str=“user13userddduser345”;
var rs=str.split(regx);
rs的值为:{3userddd,45}
以上就是小编今天的分享了,希望可以帮助到大家。
java手机号码正则表达式
正则表达式学习之简单手机号和邮箱练习
正则表达式的组成规则
在java中,正则表达式的编译是类
java.util.regex.Pattern
正则表达式的构造摘要
1.字符x
包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号的普通字符。
比如之前的例子
可以将[1-9][0-9]{4,12}改成
1[0-9]{4,12}或者a[0-9]{4,12}
此时就表示以1开始或者以a开始的字符,就表示一个任意的普通字符。
2.\\ 反斜线字符
表示一个反斜线,更改下之前的代码
3、[abc] a,b或者c(简单类),任选一个,只能在abc中
4、[^abc] 任何字符,除了a,b,c(否定),不是abc的任意字符
5.[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
6. \d 数字:[0-9]
\D 非数字: [^0-9]相对于\d是取反,不是数字的就可以
7. \w 单词字符:[a-zA-Z_0-9]匹配字母或数字或下划线或汉字,\W是取反:[^\w]
上面这些有助于我们理解正则表达式,建立概念,实际上正则有很多构造,需要可以百度搜索,现在我们多做些练习,补充理解学习。
练习:判断手机号是否满足需求
准备手机号例子:
18372345676
18372345673
18372345672
18372345671
13469830000
15926943333
18727244444
13901657081
规则:
1. 首位是1
2. 第二位是[358]
3. 后续数字 表示数字:[0-9]
X{n} X,表示恰好 n 次,后续位数为9位,所以X是[0-9],n是9,结合起来是[0-9]{9}
那么正则就是1[358][0-9]{9}
编写代码
运行结果
练习:邮箱判断
下面邮箱例子(实际邮箱正则很复杂):
1233213123@qq.com
zoushdiasd@163.com
heis_321@126.com
guaojpod@sina.com.cn
daioyasodi@tencent.cn
规则:
1.以@符合分为三个部分
2. @以前的部分:\w{8,10}
3.@
此时的正则是: \w{8,10}@
4. @后面的部分可以依据.(点)进行划分
5. .以前的部分[a-z1-9]{2,7}
6. .本身表示任何字符,所以需要转义\.
此时的正则是: \w{8,10}@[a-z1-9]{2,7}\.
7. .后面的部分可以暂时表示宽泛一些[a-z]{2,3}
此时的正则是: \w{8,10}@[a-z1-9]{2,7}\.[a-z]{2,3}
8. 多个com和cn可以将点及后面的部分一起,看做一个整体(\.[a-z]{2,3}){1,2}
此时的正则是:
\w{8,10}@[a-z1-9]{2,7}(\.[a-z]{2,3}){1,2}
编写代码
结果
- 01-07生活
王者荣耀暖男名字容易撩妹子
- 04-22生活
一吨水等于多少立方米
- 12-25教育
档案管理制度范文
- 12-13科技
MCSD认证有用吗
- 12-21科技
微博怎么关闭推荐全屏模式
- 02-11教育
三年思想工作总结
- 01-12教育
平衡计分卡的四个维度不包括什么
- 12-12教育
生物教师教学工作计划范本
推荐
- 1去酒味最快的方法322
- 2迷你世界怎么去火山290
- 3麦考瑞大学会计(CPA EXT)专业和昆士兰科技大学会计(商学)专业哪个好?491
- 4聚二******硅氧烷是硅油吗?435
- 5端游QQ飞车高级数舞蹈模式得高分玩法攻略239
- 6发好的海参怎么煮不硬172