天天看点

Javascript 正则表达式(一)

啥是正则表达式就不说了,我们直接来看第一个例子:

我们现在有一串字母组成的字符串 str="abcdefghigklmnopqrstuvwxyz"

好了,现在我们想找一下这个字符串str中有没有字符 "xyz",你可能直接看出在字符串的末尾就是,

但是如果这个字符串特别长,那就不会这么容易就能看出来了,下面就可以使用正则表达式帮助

我们来找一找;

<script>
          //先定义我们的字符串
          var str="abcdefghijklmnopqrstuvwxyz";

          //定义正则
          var patt=/abc/g;

          //通过match函数返回我们的结果
          console.log(str.match(patt));
 </script>
           

上面返回的结果是: ["abc"]   ,没错,是一个包含我们搜索结果的数组;

我们来看看正则的定义: 双斜线 /  /  是正则的标志,这个就代表正则,

/ / 之间写我们要找什么东西,比如 / abc / 就是要找 abc ,

/ /的后面写的是附加条件,比如上面的  / abc /g ,这个g 就是全局查找的意思,

什么是全局查找,也就是我们第一次找到了 abc ,但是查找过程不会停止,还会继续找完整个字符串,

如果不加 g , 那么找到第一个abc 后就会停止了,后面即便还有 abc 也不会找下去了;

上面简单了解了正则的一点内容,我们再看看 match( ) 函数,

我们 / abc /g 返回的结果是包含所有匹配结果的数组,这就是match() 函数 在有 g的情况下返回的结果,

那么很明显,如果match( ) 配合的正则没有g ,那么返回的结果就不是包含所有匹配结果的数组了,

而是一个有关匹配到的结果的相关信息的数组;

我们看看例子:

<script>
             var str="abcdefghijklmnopqrstuvwxyzabc";
             var patt=/abc/g;
             console.log(str.match(patt));
 </script>
           

上面的代码返回的是什么?  因为是全局的,而 abc 有两个,所以结果是:["abc", "abc"],一个包含两个结果的数组;

好的,上面的是全局的结果,我们再试试不是全局的:

<script>
             var str="abcdefghijklmnopqrstuvwxyzabc";
             var patt=/abc/;
             console.log(str.match(patt));
 </script>
           

返回的结果是 :["abc", index: 0, input: "abcdefghijklmnopqrstuvwxyzabc", groups: undefined] ;

这个数组的第一个元素是找到的字符串,第二个index :0 指的是abc 在字符串str中的起始位置,第三个.....

所以,返回的结果都是关于这个找到的唯一的结果的信息;

继续阅读