JavaScript学习笔记整理(六)

来源:互联网 发布:达索软件销售 编辑:程序博客网 时间:2024/05/17 12:01
RegExp对象:js中专门疯转一条正则表达式,提供使用正则表达式的常用API
在使用正则表达式时,必须创建RegExp
创建正则表达式:var RegExp=/正则表达式/ig;
RegExp的方法
test()检索字符串中指定的值,返回true或者false;影响lastIndex属性值
API:var boolean=regExp.text("被检查的字符串");     //返回true或者false;
验证和查找的区别:验证要求完整匹配,查找要求部分匹配
var regExp=/\w+@\w+([-]\w+)*(\.\w+)+/;
var regExp=  /^\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}$/;  
//验证邮箱    这个开头添加了^和最后添加了$可以匹配dhwe@jdu@iws.com是错误的
var regExp=  /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/; 
//验证邮箱,这个开头没有加^和最后没有加$,如果用户输入dhwe@jdu@iws.com是可以通过的
正则表达式 贪婪模式:.+.* 默认先匹配整个字符串,在缩小
正则表达式 懒惰模式:(.+?) (.*?),从第一个字符开始,向后扩展范围
匹配超链接的正则表达式:<a(.+?)href="(.*?)"(.*?)>
凡是正则表达式里面的斜线都变成双斜线  程序运行时,单斜线和双斜线是一样的
while(true){
var input=prompt("输入邮箱");
if(regExp.test(input)){
document.write("可以使用");
break;
}else{alert("格式错误")};
}
查找:exec:查找关键字的位置,又能找到关键字的内容,indexOf不支持正则,search支持正则,只能match所以内容,但是找不到位置
需求:找到静静和明明的位置 
   regExp.exec("被查找的内容");
查找:仅判断有没有,或者仅查找位置:indexOf()  ,支持正则表达式secrch()
仅找所有的关键字内容:match()
即找位置,又找内容:exec()
    var str="明明喜欢我,却不告诉我,别理我,我想静静,静静是谁?"
    var regExp=/明明|静静/g;   //两个元素在全局查找
    var arr=[];
    while((arr=regExp.exec(str))!=null){
    document.write("在位置"+arr.index+"发现:"+arr[0]);
    }
从正则表达式匹配内容中,取出一部分:RegExp();
案例,在一个字符串中找出网址,并找出定位的网址内容
var txt='<script href="a.js"/>'+'<a href = "cost/list.do">链接一</a>'+
'<a class="main" href = "cost/add.do">链接二</a>';
var regExp=/<a(.+?)href\s*=\s*['"](.*?)['"](.*?)>/ig;
while((arr=regExp.exec(txt))!=null){
console.log(arr[0]);
console.log(RegExp.$2);  //不能小写,RegExp.$2取出第二个匹配的来,第二个匹配(.*?)  正则表达式的第n个分组
//正则表达式时从1开始匹配
//必须通过RegExp类型,直接调用$n,不能使用对象
}


用replace方法替换字符串中匹配的字符
var str="那天我去了她家,我说,我草";
str=str.replace(/我[去草]/g,"**");  //正则表达式匹配我去,我草
document.write(str);
输出:那天**了她家,我说,**
split可以使用正则表达式,
var str="no zuo no   die";
var words=str.split(/\s+/);       //一个空格,两个空格都可以
for(var i=0;i<words.length;i++){
var frist=words[i][0].toUpperCase(1);
}
document.write(words.join(" "))
去除一个字符串开头或者结尾的空白字符
.trim可以去除开头或者结尾的空格,中间的去不了
对输入字符串的处理多数先清除开头或者结尾的空格在做处理
判断用户说输入是否和数据库中一致
.trim只有ie8不支持
所有的string API都需要变量保存结果
一常规做法
var code="haod"
input=prompt("请输入验证码");
input=input.trim();
if(input==code){
document.write("登录成功");
}else(
document.write("登录失败")
)
二,使用正则表达式封装
var code="haod";
while(true){
var input=prompt("输入验证码");
if(quchu(input).toLowerCase()==code.toLowerCase()){
document.write("登录成功");
break;
}else{
alert("验证码错误");
}
}
function quchu(str){
//使用正则表达式去掉开头和结尾的空字符
var regExp=/(^\s+)|(\s+$)/g;
str=str.replace(RegExp,"");
return str;
}
原创粉丝点击