RegExp类型,单体内置对象

1.RegExp类型:
  1)什么是正则表达式:RegExp
    --是一种规则,模式
    --强大的字符串匹配工具
    --创建:
    --使用RegExp构造函数创建:var re=new RegExp(‘a‘,‘i‘);
    --使用字面量创建:var re=/a/i;    //i--ignore表示忽略大小写

2)正则表达式里面的字符:
    1)修饰符
      --i:执行对大小写不敏感的匹配。
      --g:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
      --m:执行多行匹配

2)方括号
      组成的表达式:
        --[abk]:查找方括号之间的任何字符
        --[^abk]:查找任何不在方括号之间的字符
        --[abc]pc,o[ab]c
        --[a-z],[0-9] (范围)
        --[^a-z],[^a-z0-9]    (排除,除了...之外的字符)
        --o[^a-z0-9]pt    (组合使用)

3)元字符:
      \d: 表示数字 [0-9]
      .(点):表示匹配任意字符 [.] 除了换行和行结束符
      \w:    表示英文,数字,下划线 [a-z0-9_]
      \s:    空白字符(包括空格,Tab,其他不可打印不可显示的字符)
      \D:    [^0-9]
      \W:    [^a-z0-9_]
      \S:    非空白字符
      \n:查找换行符
      \r:查找回车符
    例子:过滤HTML标签
      var html=‘<p>我们都是好孩子</p><span>eneennene</span>‘;
      var re=/<[^<>]+>/g;    //表示html标签
      html.replace(re,‘‘);

4)量词:就是‘个数‘
      常见的量词有:+,?,*
        n+:匹配包含至少一个n的字符串
        n?:匹配任何包含零个或一个n的字符串
        n*:匹配任何包含零个或多个n的字符串(不推荐使用,会出现误导,通常用‘+‘)

其他写法的量词:
        {n}:表示正好出现8次
        {n,m}:最少n次,最多m次 如:?(问号):也可表示为{0,1}
        \d{8}:数字正好‘连续‘出现8次
        {n,}:最少n次,最多不限,如:+(加号):也可表示为{1,}
        ^n:匹配任何以n开头的字符串
        n$:匹配任何以n结尾的字符串
        ?=n:匹配任何其后紧接指定字符串n的字符串
            var str="Is this all there is";
            var patt1=/is(?= all)/g;    //匹配is后面紧跟‘ all‘的字符串
        ?!n:匹配任何其后没有紧接指定字符串n的字符串

 正则匹配电话号码:[1-9]\d{7}    (表示第一位只能是1-9,后面7位是任意数字)
       正则匹配QQ号:[1-9]\d{5,9}
       正则匹配固定电话:010-58975231/58975231    (前面的010可有可无)
        --(0\d{2,3}-)?[1-9]\d{7}
             (0\d{2,3}-)? ==>问号表示前面可有可无
        --(0\d{2,3}-)?[1-9]\d{7}(-\d{1,5})?
             ==>表示区号和分机号都是可有可无的
       正则校验邮箱:邮箱的规则(可分为5部分):
         1.一串英文,数字,下划线 (\w+)
         2. @ (@)
         3.一串英文/数字 ([a-z0-9]+)
         4. . (\.)
         5.一串英文 ([a-z]+)
          var re=/\[email protected][a-z0-9]+\.[a-z]+/i
          if(re.test(oTxt.value)){
             alert(‘邮箱合法‘);
          }else{
             alert(‘邮箱输入错误‘);
          }
       注:上面的re.test(str)是正则表达式的一个校验方法,检验这个字符串是否符合这个正则表达式
            但是其有一个问题,re.test在校验时,只要字符串的一部分符合这个规则,即为正确,所以是有问题的
            当^  在[^xxx]里面时,表示除了....之外的意思,
            当^不在方括号之内时 ^(字符串开头),    $(字符串结尾)
          
              //从字符串的开头到字符串的末尾的校验
             var re=/^\[email protected][a-z0-9]+\.[a-z]+$/i
             if(re.test(oTxt.value)){
                alert(‘邮箱合法‘);
             }else{
                alert(‘邮箱输入错误‘);
             }

5)支持正则表达式的字符串操作方法
    1.search:字符串搜索,返回搜索项在字符串中的索引位置
      var str="bacde";
      var re=/a/i;
      str.search(re);        //1

2.match:获取匹配的项
      --/\d/:    表示数字,也可以为/[0-9]/
      --全局匹配:g--global,/\d+/g:表示某个对象里的所有数字,不加g只找到第一个匹配数字
      --量词: + (表示个数,意为‘任意个‘的意思)
      --量词变化: \d,\d\d,和\d+
        var str=‘12abc v-199bh‘;
        var re=/\d/g;
        str.match(re);    //1,2,1,9,9
        var re=/\d+/g;
        str.match(re);    //12,199   这时才正常

3.replace:替换所有匹配项目
      --返回替换后的字符串
        var str="123 dfr -bh";
        var re=/\ +/g;
        str.replace(re,‘‘);
        var str1="百度公司自创立以来,我们都是好朋友,123456";
        var re=/百度|我们/;
        str1.replace=(re,‘***‘);

6)关于转义正则表达式中的元字符
    正则表达式中的元字符包括:( [ { \ ^ $ | ? * + . } ] )
    这些元字符在正则表达式中都有一定的意义,因此如果想要匹配字符串中包含的这些元字符,就不许对它进行转义
      1.匹配第一个‘bat‘或‘cat‘,不区分大小写: var reg=/[bc]at/i;
      2.匹配第一个"[bc]at"或,不区分大小写: var reg=/\[bc\]at/i;(通过\转义)
      3.匹配所有以‘at‘结尾的3个字符的组合,不区分大小写: var reg=/.at/ig;
      4.匹配所有‘.at‘,不区分大小写: var reg=/\.at/ig;

2.单体内置对象:Global对象,Math对象
  1)Global对象(全局对象):JS中这个对象是抽象的,不属于任何其他对象的属性和方法,都属于它的属性和方法
    1)常见的全局函数:(Global对象的方法)
    --isNaN():检查某个值是否是数字
    --isFinite():检查某个值是否为有穷大的数
    --parseInt(string):解析一个字符串并返回一个整数,从左到右查看字符串,当碰到非数字就返回去
      parseInt(‘12px23‘)--12            parseInt(‘abc‘)---NaN
    --parseFloat(string):解析一个字符串并返回一个浮点数
      (都用parseFloat也可以,整数字符串在parseFloat之后还是整数)

2)其他方法:
      1.URL编码方法:(因为有效的URL不应该含有特殊字符,例如空格等,需要通过编码才能够让浏览器理解和接受)
        --encodeURI():把字符串编码为URI,不会对本身属于URL的特殊字符进行编码,如冒号,正斜杠,问号,和#号
        --decodeURI():只能对经encodeURI()编码的字符进行解码
        --encodeURIComponent():也是编码无效的URL字符串,会对它发现的任何非标准字符进行编码
        --decodeURIComponent():只能对经encodeURIComponent()编码的字符进行解码
        document.write(encodeURI("http://www.w3school.com.cn"));
          --http://www.w3school.com.cn
        document.write(encodeURIComponent("http://www.w3school.com.cn"));
          --http%3A%2F%2Fwww.w3school.com.cn

2.eval()方法:是一个完整的ES解析器,它只接受一个参数,即要执行的JS字符串,并执行其中的的JS代码
         eval("alert(hi)"); 等价于 alert(‘hi‘);
         var msg="hello,js";
         eval("alert(msg)"); //hello,js
         eval("x=10;y=20;document.write(x*y)");
         document.write(eval("2+2"));

2)Math对象:不需要经过实例化(new)的对象,直接可以使用==>Math.ceil();
     Math对象属性:
      --Math.E:自然对数的底数,算术常量 e
      --Math.PI:返回圆周率
      --Math.LN2:返回2的自然对数
      --Math.LN10:返回10的自然对数
      --Math.LOG2E:返回以2为底的 e 的对数
      --Math.LOG10E:返回以10为底的 e 的对数

Math对象方法:
      --Math.abs(x):返回数的绝对值
      --Math.max(x,y):返回x和y中的最大值。
      --Math.min(x,y):返回x和y中的最小值。
      --Math.ceil(val):向上取整
      --Math.floor(val):向下取整
      --Math.round(val):取近似值,四舍五入
      --Math.sqrt(x):返回数的平方根
      --Math.pow(x,y):返回x的y次幂
      --Math.random():返回大于等于0小于1的随机数
      可以从整数范围内随机选择一个值:值=Math.floor(Math.random()*可能的总数+第一个可能的值)
      例:选择2-10之间的随机数:var num=Math.floor(Math.random()*9+2);

时间: 2024-10-26 03:27:37

RegExp类型,单体内置对象的相关文章

js之数据类型(对象类型——单体内置对象——JSON)

JSON(Java Script Object Notation)使用JavaScript语法,是用于存储和传输数据的格式,通常用于服务端向网页传递数据.JSON格式仅仅是一个文本,文本可以被任何编程语言读取及作为数据格式传递(一种类似js中的对象格式的字符串,json它是一个字符串,只不过长的像对象)从上面的描述中我们可以看到如下知识 JSON的规则:数据放在了一对引号当中,用{}或者是[]括起来:里面的每一个数据都是以键值对表示(key:value);key必须放双引号,单引号不行:每个数据

基本类型、引用类型、基本包装类型和单体内置对象

基本类型值指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象.基本包装类型和单体内置对象都是特殊的引用类型. 一.基本类型 基本类型包含Undefined.Null.Boolean.Number.String 这5种.基本数据类型是按值访问的,因为可以操作保存在变量中的实际值. 基本类型保存在内存中的栈中,大小固定,复制其变量时会创建这个值的一个副本.用typeof方法可以确定一个值是哪种基本类型. 二.引用类型 引用类型包括Object .Array.  Date.  RegExp.

JavaScript基础——引用类型(四)基本包装类型(Boolean、Number、String)、单体内置对象(Global、Math)

基本包装类型 为了便于操作基本类型值,ECMAScript还提供了3个特殊的引用类型:Boolean.Number和String.这些类型与其它引用类型相似,但同时也具有与各自的基本类型相应的特殊行为.实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操作这些数据.如: var s1 = "some text"; var s2 = s1.substring(2); 这个例子中的变量s1包含一个字符串,字符串当然是基本类型值.而下

高程5.7单体内置对象 5.8小结

内置对象的定义:由ECMAScript实现提供的, 不依赖于鹤环境的对象,这些对象在ECMAScript程序执行之前就已经存在了. 开发人员不必显式地实例化内置对象,因为它们已经实例化了. 前面介绍了大多数内置对象,如Object,Array和String.ECMA-262还定义了两个单体内置对象:Global和Math. 5.7.1 Global对象 没有全局变量或全局函数;所有在全局作用域中定义的属性和函数,都是Global(全局)对象的属性. 诸如isNaN(),isFinite(),pa

第五章 单体内置对象

ECMA-262 对内置对象的定义是:"由ECMAScript 实现提供的.不依赖于宿主环境的对象,这些对象在ECMAScript 程序执行之前就已经存在了."意思就是说,开发人员不必显式地实例化内置对象,因为它们已经实例化了. 我们已经介绍了大多数内置对象,例如Object.Array 和String.ECMA-262 还定义了两个单体内置对象:Global 和Math. 7.1 Global对象 Global(全局)对象可以说是ECMAScript 中最特别的一个对象了,因为不管你

DOM笔记(九):引用类型、基本包装类型和单体内置对象

一.Array 1 .创建数组的方式 //Array构造函数(可以去掉new)var colors0 = new Array();var colors1 = new Array(20);var colors3 = new Array("red","blue","green");//数组字面量var colors4 = ["red","blue","green"];var colors5 

单体内置对象的理解

1.有ECMAScript提供的,不依赖于宿主环境,在程序执行之前就已经存在的对象,叫内置对象,例如Object,Array,String 也就是说,实际使用时不用实例化内置对象,因为他们已经实例化了 2.ECMAScript定义了两个单体内置对象Global和Math a.Global对象 所有在全局作用域中定义的变量和函数,都是Global对象的属性和方法,也就是说,不属于任何对象的属性和方法,都是Global的属性和方法,例如eval()和parseInt() b.Math对象 Math对

javascript学习笔记 - 引用类型 单体内置对象

七 单体内置对象 1.Global对象 不属于任何对象的属性和方法,都归于它.全局作用域中定义的变量.函数,都属于Global对象 1.1 URI编码  encodeURI <=>decodeURI 不会编码本身属于uri的特殊字符 encodeURIComponent  <=> decodeURIComponet 将所有非标准字符进行编码 1.2 window对象 在web浏览器中,一般是将Global对象当作window对象的一部分.因此全局作用域中的变量.函数,都可以通过wi

5.7 单体内置对象

ECMA-262对内置对象的定义是:“有ECMAScript实现提供的,不依赖于宿主环境的对象,这些对象在ECMAScript程序中执行之前就已经存在了.”意思就是说,开发人员不必显式的实例化内置对象,因为它们已经实例化了. Global对象 Global(全局)对象可以说是ECMAScript中最特别的一个对象了,因为不管你从什么角度上看,这个对象都是不存在的.ECMAScript中的Global对象在某种意义上是作为一个终极的“兜底儿对象”来定义的.换句话讲,不属于任何其他对象的属性和方法,