1.定义正则表达式:
a.普通方式:var reg=/表达式/附加参数
附件参数:
g:代表可以进行全局匹配。
i:代表不区分大小写匹配。
m:代表可以进行多行匹配。
上面三个参数,可以任意组合,代表复合含义,当然也可以不加参数。
例子:
var reg=/a*b/;
var reg=/abc+f/g;
b.构造函数方式: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.表达式操作
1)表达式操作,在这里是指和表达式相关的方法,我们将介绍六个方法。
2)表达式对象(RegExp)方法:
1>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执行多少次,都返回第一个匹配。后面还有相关内容涉及到对此想象的解释。
2>test(str),判断字符串str是否匹配表达式,返回一个布尔值。例如:
var regx=/user/d+/g;
var flag=regx.test(“user12dd”);
flag的值为true。
3)String对象方法
1>match(expr),返回与expr相匹配的一个字符串数组,如果没有加参数g,则返回第一个匹配,加入参数g则返回所有的匹配
例子:
var regx=/user/d/g;
var str=“user13userddduser345”;
var rs=str.match(regx);
rs的值为:{user1,user3}
2>search(expr),返回字符串中与expr相匹配的第一个匹配的index值。
例子:
var regx=/user/d/g;
var str=“user13userddduser345”;
var rs=str.search(regx);
rs的值为:0
3>replace(expr,str),将字符串中匹配expr的部分替换为str。另外在replace方法中,str中可以含有一种变量符号$,格式为$n,代表匹配中被记住的第n的匹配字符串(注意小括号可以记忆匹配)。
例子:
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
4>split(expr),将字符串以匹配expr的部分做分割,返回一个数组,而且表达式是否附加参数g都没有关系,结果是一样的。
例子:
var regx=/user/d/g;
var str=“user13userddduser345”;
var rs=str.split(regx);
rs的值为:{3userddd,45}
js正则表达式匹配的五种方法:1、replace()方法;2、match()方法;3、search() 方法;4、exec() 方法;5、test()方法。
方法一 :replace()方法
用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
varregexp=/script/i;
vartext="JavaScript";
vari=text.search(regexp);//匹配时返回子串的开始字符位置4
方法二:match()方法
只有一个参数为正则表达式,取出匹配的字段。
varnum=/\d+/g;//加上g的话,就是全局匹配!
varstr="a3sdf45df";
str.match(num);//返回["3","45"]
方法三:search() 方法
用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。
varstr="abcd1223abd";
varreg=/\d+/;
str.search(reg);//返回一个位置序号:4
方法四:exec() 方法
用于检索字符串中的正则表达式的匹配。 该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
varpattern=/Java/g;
vartext="JavaScriptismorefunthanJava";
varresult;
while((result=pattern.exec(text))!=null){
document.write(result[0]);
document.write(result.index);
document.write(pattern.lastIndex);
}
方法五:test()方法
测试正则表达式与指定字符串是否匹配
/123456/.test("123456")//ture
/123456/.test("abc123456")//ture
/123456/.test("123456abc")//ture
/123456/.test("12345")//flase
- replace正则表达式 js正则表达式匹配的五种方法
- 冰感脱毛更轻松,就用DEESS小冰鲸脱毛仪
- 电脑无法添加打印机怎么办?打印机添加不成功怎么解决?
- windows防火墙怎么关windows防火墙关闭方法 怎么关掉电脑自带的防火墙?
- 象山一院开展“爱陪伴,爱分享”活动
- 光影世界,快乐成长!象山44名医护人员子女开展研学活动
- 象山县市场监管局开展儿童用品监督检查活动
- 宁波诺丁汉大学开展“麦播计划”支教活动
- 英式英语和美式英语的区别有哪些?哪些单词英式美式发音不同?
- 象山县鹤浦镇组织开展“小小啄木鸟”专项体验活动
- 象山县黄避岙乡人大代表开展食品安全检查
- 一公斤汽油等于多少升?一吨原油能提炼多少升汽油?
- 中国结的寓意中国结的含义 中国结的传统文化内涵
- acca证书有什么用? ACCA考试的考点都是在哪里?
- 变压器的工作原理变压器的作用 变压器的工作原理是基于什么?
- 美好生活,民法典相伴——贤庠镇司法所开展法治讲座
- 三观正常的标准是什么?什么叫三观正常简单解释
- 信的格式怎么写写信的格式是什么? 正规书信格式范文标准
- 与文明同行,助文明创建——涂茨镇、黄避岙乡
- 邮政银行卡拒绝交易是什么原因?邮政储蓄银行为什么拒绝交易?