啥是正则表达式就不说了,我们直接来看第一个例子:
我们现在有一串字母组成的字符串 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中的起始位置,第三个.....
所以,返回的结果都是关于这个找到的唯一的结果的信息;