(1).分组
字符组[]:表示匹配若干个字符之一
字符组可以浅显的理解为一些字符的组合,字符组与普通字符的区别在于:abc普通字符表示匹配a接下来b接下来c而字符组[abc]表示在同一位置匹配a或者b或者c;由于字符组本身的含义也决定了可以将这个字符组看成是一个普通的特殊字符。
普通性:普通是因为它也表示在一个位置上匹配一个字符对单个字符的操作在其上面也是可以起作用的;如:[a-z]{6};
特殊性:特殊是因为,1.其他字符在其内外的含义可能不同如:-,.,^等,2.在同一个位置可以有多中选择,但这种选择也只是限于一个字符;
各个字符在字符组内外的区别:
-:在字符组内部,表示一个范围;在字符组外仅仅表示是一个字符;
例子:
-在字符组外
<script type="text/javascript">var str = "2016-8-20";var reg = /16-8/g;console.log(str.match(reg)); //16-8</script>-在字符组内
<script type="text/javascript">var str = "2016-8-20";reg = /1[6-8]/g;console.log(str.match(reg)); //16 </script>-在字符组外是一个普通字符只表示-这个字符本身,所以匹配的是1接下来是6接下来是-接下来是8的这段字符串;所以是16-8
<script type="text/javascript">var str = "2016-8-20";var reg = /6.8/g;console.log(str.match(reg)); //6-8</script>.在字符组内
<script type="text/javascript">var str = "2016-8-20";var reg = /6[.]8/g;console.log(str.match(reg)); //null</script>.在字符组外表示任意字符;所以匹配的是6接下来是任意一个字符接下来是8的一个字符串,所以匹配到的是6-8;
<script type="text/javascript">var str = "han";var reg = /^ha/g;console.log(str.match(reg)); //ha</script>^在字符组内
<script type="text/javascript">var str = "han";var reg = /[^0-9]/g;console.log(str.match(reg)); // h,a,n</script>脱字符在[]外部是一个锚点,表示匹配以某某字符开头的字符或者字符串,在[]中有除了的意思
<script type="text/javascript">var str = "han";var reg = /n[^q]/g;console.log(str.match(reg)); //null</script>注意:这个例子在n之后没有任何字符,所以匹配的结果为空,如果按照上述的第二种理解可能就会认为匹配结果是:n
<script type="text/javascript">var str = "2016-8-20";var reg = /(16-8)/g;console.log(str.match(reg)); //16-8</script><script type="text/javascript">var str = "2016-8-20";var reg = /16-8/g;console.log(str.match(reg)); //16-8</script>这个例子有没有括号都一样都表示匹配16-8这个字符串
<script type="text/javascript">var str = "greygray";var reg = /gr[ea]y/g;console.log(str.match(reg)); // grey,grayreg = /gr(e|a)y/g;console.log(str.match(reg)); //grey,gray</script>以上这两种匹配的结果都是grey, gray也就是说(|)的分支选择结构在一定程度上是可以和[]进行互相替代
<script type="text/javascript">var str = "greygray";var reg = /gre|ay|yg/g;console.log(str.match(reg)); //gre,yg,ay</script>输出结果:gre,yg,ay