JavaScript:学习笔记(3)——正则表达式的应用

JavaScript:正则表达式的应用

应用正则表达式对象RegExp

创建正则表达式

JavaScript中使用RegExp对象来表述一个正则表达式。使用正则表达式之前首先要创建一个RegExp对象

var oRexp = new RegExp(pattern,[flag]);

说明:

  pattern:为必选项,表示以字符串格式表示的正则表达式。

  flag:为可选项,是匹配选项,可用值如下:

  

 修饰符 描述
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配。

用户不一定要显示的创建RegExp,还可以隐式地创建RegExp对象

var oRegp = /pattern/[flag]

注意:

  使用显式格式创建RegExp对象时,正则表达式中的“\”,要用“\\”来代替,且表达式开头和结尾不需要书写“/”。

判断字符串是否存在匹配内容

说明:

  test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。

实例:

  检测用户输入的邮箱是否匹配模式

<!DOCTYPE html>
<html lang="en">
    <head>
        <title></title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="css/style.css" rel="stylesheet">
    </head>
    <body>
        <form>
            <input name="email" type="text" id="email">
            <input name="check" type="button" value="检测" onclick="checkMail()">
        </form>
        <script>
            function checkMail()
            {
                var objReg =/\w+[@]{1}\w+[.]{1}\w+/  //模式
                var email = document.getElementById("email").value;
                if(objReg.test(email))    //利用test进行匹配检测,返回true或这false
                {
                    alert("Email符合规范")
                }else{
                    alert("Email不符合规范")
                }
            }
        </script>
    </body>
</html>

对字符串进行匹配检测  

说明:

  exec()方法,通过对指定的字符串进行一次匹配检测,获取字符串中第一个与正则表达式所匹配的内容,并将该匹配内容及其子匹配的结果存储到返回的数组中。

实例:

  检测手机号,并将第一次匹配成功的内容及其子匹配的结果存储到返回的数组中。

        <script>
                var objReg =/1[35](\d)(\d{8})/g;
                var ostring="我的电话13111111111 它的电话15222222222"
                var arr=objReg.exec(ostring);
                for(var i=0;i<arr.length;i++)
                {
                    document.write(arr[i]);
                }
        </script>

说明:

  这里只有第一次匹配到的,即13111111111这个电话,15222222222虽然也符合,但是这个方法只进行一次匹配。

替换字符串中的指定内容

说明:

  replace()方法可以用指定的子字符串替换掉字符串中与指定额正则表达式相匹配的内容。

实例:

  将所有数字变成X



        <script>
                var objReg =/\d/g;
                var ostring="我的电话13111111111 它的电话15222222222"
                document.write(ostring.replace(objReg,‘X‘));
        </script>



匹配处理结果

在JavaScript中,使用正则表达式进行检索后,匹配结果将保存在集合中。本节将讲解该集合中的各种处理,如获取匹配位置、获取子匹配结果、获取匹配索引。

获取字符串中所有的匹配信息

说明:

  String.match()方法返回一个数组,数组存储了字符串中所有的匹配信息。

实例:

  匹配所有第二个字母为o的单词

        <script>
                var objReg =/\wo(\w+)?/g;  //所有第二个字母为0的单词
                var ostring="Do you lova MS?"
                var arr = ostring.match(objReg);
                if(arr!=null)
                {
                    for(var i=0;i< arr.length;i++)
                    {
                        document.write("<li>"+arr[i])
                    }
                }
        </script>

获取第一次匹配成功的起始地址

说明:

  String.search()方法是与指定的正则表达式相比较,以得到与之相匹配的内容第一次出现时的位置。

实例:

  检测第一次出现ABCBA类似形式的字串位置

代码:        <script>
                var objReg =/(\d)(\d)\d\2\1/;
                var ostring="11010111"
                var pos = ostring.search(objReg);
                if(pos!=-1)
                {
                    var content = objReg.exec(ostring);
                    alert("找到了,位置是"+pos+" 内容是"+content[0]);
                }
        </script>效果:  

补充:

说明:

  这里用到了 后向引用 

  • 当一个正则表达式被分组之后,每一个组会自动被赋予一个组号,该组号可以代表该组的表达式。
  • 分组的编制规则:从左至右,以左括号为标志,第一个分组为1,第二个分组为2,以此类推。
  • 反向引用提供了查找重复字符组的方便方法。它可被认为是再次匹配同一个字符串的快捷指令。

第二种方式:

  RegExp.index:静态属性,返回字符串第一次匹配出现的起始位置  

  


 

时间: 2024-10-05 10:31:32

JavaScript:学习笔记(3)——正则表达式的应用的相关文章

javascript学习笔记---ECMAScript语法(变量)

变量声明关键字var: var i = 1: var t = "asd"; var test1 = "hi", test2 = "hello"; 声明变量不一定要初始化, var i;//ok 另一方面在使用变量前若未加关键字var,则此变量为全局变量(此特性需特别记住). 变量名字: 变量名需要遵守两条简单的规则: 第一个字符必须是字母.下划线(_)或美元符号($) 余下的字符可以是下划线.美元符号或任何字母或数字字符 命名变量规则: Came

JavaScript学习笔记【2】表达式和运算符、语句、对象

笔记来自<JavaScript权威指南(第六版)> 包含的内容: 表达式和运算符 语句 对象 表达式和运算符 数组直接量中的列表逗号之间的元素可以省略,这时省略的空位会填充值undefined.元素列表末尾可以留下单个逗号,这时并不会创建一个新的值为undefined元素. 属性访问表达式,.identifier的写法只适用于要访问的属性名称是合法的标识符,并且需要知道要访问的属性的名字.如果属性名称是一个保留字或者包含空格和标识符,或是一个数字(对于数组来说),则必须使用方括号的写法.当属性

Perl语言学习笔记 9 正则表达式处理文本

1.替换 s/PATTERN/REPLACE/; #返回是否替换成功的布尔值 可以使用捕获变量,如:s/(\w)/$1/ 匹配失败则不做任何处理 2.定界符 对于没有左右之分的定界符,重复三次即可,如:s///.s### 对于有左右之分的定界符,需使用两对,一对包含模式,一对包含替换字符串,这两对可以不一样,如:s{}{}.s[]{}.s<>[] 3.可选修饰符 /g可进行全局替换,替换所有匹配到的字符串,如:s/ / /g /s:使得 . 匹配所有字符 /i:大小写无关 4.绑定操作符 $f

Javascript 学习笔记 2: 标识语句

可以在任何语句声明之前使用唯一标识(identifier)和冒号(:)用来标记该语句: identifier: statement 这样,你可以在程序的任何其他地方通过标识来使用这个语句.即使在语句内部也可以使用该语句的标识(例如:循环语句和条件语句).当在一个循环语句前添加一个标识,你可以在语句内部通过break 标识来退出当前循环,也可以通过continue标识来继续执行该语句.例如: mainloop: while(token != null) { // Code omitted... c

javascript学习笔记---ECMAScript-判断变量类型

判断类型之前,先要清楚有哪些类型. (理理思路:程序由数据和方法构成,数据由简单数据和复杂数据构成) 即类型有: 数据(简单数据:boolean,string,num,undefined,null.复杂数据:object), 方法(function) 万能的typeof,神一样的方法 typeof(1);// num typeof("hello");// string   typeof(false);// boolean var vFlag; typeof(vFlag);// unde

javascript学习笔记---ECMAScript语法(引用类型)

引用类型通常叫做类(class). 本教程会讨论大量的 ECMAScript 预定义引用类型. 引用类型 引用类型通常叫做类(class),也就是说,遇到引用值,所处理的就是对象. 本教程会讨论大量的 ECMAScript 预定义引用类型. 从现在起,将重点讨论与已经讨论过的原始类型紧密相关的引用类型. 注意:从传统意义上来说,ECMAScript 并不真正具有类.事实上,除了说明不存在类,在 ECMA-262 中根本没有出现"类"这个词.ECMAScript 定义了"对象定

javascript学习笔记---ECMAScriptECMAScript 对象----定义类或对象

使用预定义对象只是面向对象语言的能力的一部分,它真正强大之处在于能够创建自己专用的类和对象. ECMAScript 拥有很多创建对象或类的方法. 原始的方式 因为对象的属性可以在对象创建后动态定义(后绑定),类似下面的代码: var oCar = new Object; oCar.color = "blue"; oCar.doors = 4; oCar.mpg = 25; oCar.showColor = function() { alert(this.color); };不过这里有一

javascript学习笔记---ECMAScriptECMAScript 对象----修改对象

通过使用 ECMAScript,不仅可以创建对象,还可以修改已有对象的行为. prototype 属性不仅可以定义构造函数的属性和方法,还可以为本地对象添加属性和方法. 创建新方法 通过已有的方法创建新方法Number.prototype.toHexString = function() { return this.toString(16); }; 在此环境中,关键字 this 指向 Number 的实例,因此可完全访问 Number 的所有方法.有了这段代码,可实现下面的操作: var iNu

javascript学习笔记——如何修改&lt;a href=&quot;#&quot;&gt;url name&lt;/a&gt;

0.前言 使用了一段时间javascript,再花了点时间学习了jquery,但是总是感觉自己很"迷糊",例如<a href="#">url name</a>中,如果修改href中的"#"应如何编写代码,如果修改url name应如何编写代码.再加上javascript和jquery操作方法略有不同,所以我就更"迷糊"了. [说明] 曾经使用关键词--"innerHTML和value区别&qu