Dom第六天学习总结

1.    复习基本元字符
    .        表示除换行外的任意的单个字符
    []        字符组,任意的单个字符,中括号中的任意一个字符
    ()        含义 1. 改变优先级  2. 提取组(分组)
    
    限定符
    {n}        表示前面的表达式必须出现n次
    {n,}    表示前面的表达式至少出现n次,最多不限
    {n,m}    至少出现n次,最多出现m次
    
    *        表示出现0次或多次
    +        表示出现1次或多次
    ?        表示0次或1次        另外一个意思是:终止贪婪模式
    
    简写表达式
    [0-9]    
    \d        表示[0-9] 数字
    \D        非数字
    
    \s        表示所有空白符
    \S        表示\s的反面
    
    \w        非特殊字符
    \W        特殊字符
    
    \b        表示单词的边界
    
2.    JS中创建正则表达式方法
    1. var regex = new RegExp("\\d{5}")        要考虑转义符
    2. var regex = /\d{5}/ (recommand)        写在//的正则表达式不用管转义符
    
    RegExp对象的方法
    1.     test(str)判断字符串str是否匹配正则表达式,返回true/false
    2.     exec(str)进行搜索匹配,返回值为匹配结果(*),相当于C#中match()和matches()
        如果exec()找到了匹配的文本,则返回一个结果数组(完全匹配的字符串以及提取组的结果)
        否则,返回null
        要提取多个需要反复调用exec() 类似于matches()方法
        
    注意:全局模式/..../g  忽略大小写/..../i  多行匹配/..../m
    
    在非全局模式下,调用一次exec()相当于match();
    在全局模式下连续多次调用相当于matches()
    
3.    string的正则表达式
    String对象中提供了一些与正则表达式相关的方法,相当于对于RegExp类的包装,简化调用
    
    match(regexp),    非全局模式下相当于调用exec()
                    全局模式下相当于调用C#的matches(),返回数组中是所有的匹配结果(不包含提取组信息)
    举例:
        var s = "aaa@163.com";
        var regex = /(.+)@(.+)/;
        var match = s.match(regex);
        alert(RegExp.$1+",服务器:"+RegExp.$2);
        
    字符串.replace(/正则/g,"要替换的字符串$1");
    
4.    HTML, JS的压缩和混淆
    去掉空格、缩短变量名,让html, js尺寸更小,提高下载速度
    HTML压缩器:HTML Compress
    JavaScript压缩器:Google Closure Compiler, YUI Compressor, JsPacker
    
5.    键盘按键弹起(输入完成)事件    onkeyup
    (输入的是字母可以 如果是汉字,按下键盘但字可能还没有输入,考虑使用onchange事件)
    获取用户点击的keyCode            window.event.keyCode
    
6.    JS的一些习惯与性能问题
    1)    声明变量要赋初值 var n = 10
    2)    尽量避免直接声明全局变量, 比如要声明全局变量name,但是它有可能与window.name冲突
        所以全局变量一般都会声明在一个全局对象中:
        var itcast = {name:'zxh', num:10},使用这些全局变量的时候通过
        itcast.name或者itcast.num,就可以减少与系统的重名了
    3)    当编写大量JS代码的时候难免会遇到命名冲突的问题,这时可以通过模拟命名空间的方式
        来避免命名冲突。如:
        var itcast = {};
        itcast.net = {};
    4)    尽量避免使用全局变量(搜索全局变量时,会一层一层的搜索每个作用域范围,耗时,低效)
    5)    使用减值循环或者优化循环条件,不要在循环条件中写i<xxx.length
        而要用一个变量来代替如i<len。这时因为循环条件每次都会执行,这样的话每次都会计算xxx.length
    6)    避免使用SetInterval("myFunc()",1000) 这种双重解析的代码  应使用匿名方法
    7)    使用原生的方法,比如内置的join() reverse(),而不要用自己写的
        因为原生方法都是用c或者c++写的,性能高
    8)    使用switch来代替多个if-else
    9)    尽量减少语句数量
    10)使用文档碎片,避免多次更新页面
        var fragment = document.createDocumentFragment();
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值