正则表达式主要用作
校验
匹配
替换
正则表达式创建
1.直接量
/pattern/attrs:pattern代表模式规则,是一个字符序列,attrs:增加修饰符
2.对象创建
new RegExp(pattern,attrs)
校验字符串是否匹配给的的模式
RegExp.test(string) //是否符合匹配规则
RegExp.exec(string) //
String.search(RegExp)
String.match(RegExp)
String.replace(RegExp/str,replacement)
字符串上的方法
String.prototype.match(regexp)
检索字符串中能够匹配正则表达式的匹配项
参数regexp:代表正则表达式
返回值:返回匹配结果的数组
var b="1231231231234296640918";
console.log(b.match(/123/g)) //返回["123","123","123","123"]
String.prototype.seach(regexp)
执行正则表达式和string之间的搜索匹配
参数:regexp代表正则表达式对象
返回值:第一个匹配的子串的其实位置或-1,注意不支持g,也就是全局查找
var b="1231231231234296640918";
console.log(b.search(/\d/)) //返回0,因为第一个位置就是0
String.prototype.replace(RegExp|str,replacement)
匹配字符串并用新的替换值替换掉匹配到的子串
参数:RegExp|str代表正则表达式对象或者要被替换的子串,replacement:newSubStr或者创建新子串的函数
返回值:被部分或全部匹配替换的新字符串
var b="1231前端23123前端1234前端296640前端918";
console.log(b.replace(/前端/g,"后端")) //输出:1231后端23123后端1234后端296640后端918
RegExp对象
RegExp.prototype.test(str)
判断正则表达式与指定字符串是否匹配
参数:str代表用来匹配的字符串,返回true或false
RegExp.prototype.test(str)
在指定字符串中执行搜索匹配,得到结果数组
参数:str代表用来匹配的字符串,返回值,完整的匹配数组,第一个元素是匹配的字符串,余下的元素是与分组的子表达式匹配的子串,另外此方法执行完会更新正则表达式对象中的属性lastIndex(RegExp.lastIndex是指定下一次匹配的起始索引,使用全局检索时才会生效)
案例分析
邮箱-案例分析
一个合格的邮箱:必须有@字符,前缀至少有一个字符,允许的字符有字母,数字,.,_和-,后缀中允许的字符有字母,数字,-和.,最后以2-10个字母或数字结尾
function test() {
var inputEamil=document.getElementById("email").value
console.log(inputEamil);
var textEmail=new RegExp(/^([\w_\.\-\+])+\@([\w\-]+\.)+([\w]{2,10})+$/);
if (inputEamil.length==0){
alert("邮箱不能为空")
}
else {
if (textEmail.test(inputEamil)){
document.getElementById("text").innerHTML="输入正确!"
}
else {
document.getElementById("text").innerHTML="请输入正确的邮箱格式!"
}
}
}
url-案例分析
http://study.163.com/course/courseMain.html?courseId=891009
http:这部分代表protocal
study.163.com这部分代表hostname
/course/courseMain.html这部分代表pathname
?courseId=891009这部分代表search