正则表达式学习(一)

  以前看到一大串符号如这样的/^[a-z]+s+d+$/g,就知道是正则表达式,但是具体代表什么意思,一直没去深究过.今天趁着工作上稍微的清闲,来探索一下.

这里以JavaScript中的正则表达式为例.

正则表达式两种写法:

  var reg = new RegExp("e");//RegExp对象是一个预定义了属性和方法的正则表达式对象;

  var reg1 = /e/;

常用的是第二种写法,接下来也就第二种进行探索

使用字符串方法:search()和replace() 用法:字符串.方法()

  search()方法用于检索字符串中指定的字符串,或检索与正则表达式相匹配的子字符串,并返回子字符串的起始位置,检索不到返回-1.

  实例: var str = "Hello World";

     var n = str.search(/world/i);//这里的world是一个模式(用于检索),i是一个修饰符(不区分大小写).

     var n1 = str.search("World");//语法:StringObj.search(RegExp),对全局和大小写敏感

  输出结果为:6

  replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的字符串

  实例: var str = "Hello World!";

     var res = str.replace(/world/i,"Java");

     var res1 = str.replace("World","Java");

  输出结果为: Hello Java!

  正则表达式修饰符:

            i  执行对大小写不敏感的匹配;

            g  执行全局匹配(查找所以匹配,而非在找到第一个后停止);

            m  执行多行匹配;

  正则表达式模式:

        表达式: [abc]  查找方括号之间的任何字符;

            [0-9]  查找任何从0至9的数字;

            (x|y)  查找任何以|分割的选项;

        元字符: d  查找数字;

            s  查找空白字符;

              匹配单词边界;

            uxxxx 查找以十六进制数xxxx规定的Unicode字符;

        量词:  n+  匹配任何包含至少一个n的字符串;

             n*  匹配任何包含零个或者多个n的字符串;

             n?  匹配任何包含零个或者一个n的字符串;

  RegExp对象的方法:RegExp.方法()

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

     实例:  var rep = /e/;

          var res = rep.test("Hello World!");

          var res1 = /e/.test("Hello World!");        

     输出结果为: true

     exec()方法:用于检索字符串中的正则表达式的匹配.该方法返回一个数组来存放匹配的结果,如果未找到匹配,则返回null;

     实例:  /e/.exec("Hello World!");

     输出结果为: e

     compile()方法:改变RegExp,既可以改变检索模式,也可以改变第二个参数

     实例:  var rep = /e/;

          var res = rep.test("Hello");

          rep.compile("d");

          var res1 = tep.test("Hello");

      输出结果为: true,false

原文地址:https://www.cnblogs.com/goujh/p/8479685.html