JS正则表达式中有哪些特殊字符,这些特殊字

JavaScript09

JS正则表达式中有哪些特殊字符,这些特殊字,第1张

这些符号有:^ $ . * + - ? = ! : | \ / ( ) [ ] { }1.“[ ]”表示字符类: 即括号里是个字符集:如/[abc]/,表示和含有a,b,c任何一个字母的字符串都匹配。注:特殊字符类:\s表示空格符、制表符、Unicode空白符。\S表示非空格空白符。 (也可自定义Unicode字符类:如:/[\u4E00-\u9FA5]/表示只匹配中文字符。)\w 任何单字字符,相当于[a-zA-X0-9_];\W与\w相反。\d 任何数字,相当于[0-9];\D与 \d相反。\b在字符类中使用表示退格符,[\b]则表示退格直接量;\b可以用来指定匹配位置,即匹配到达单词边界,称为锚;如:查找一个句子里的单词 java , 可以使用/\bjava\b/;\B与\b相反。2.“-"表示连字符,如[a-z];3."."表示除换行符;表示匹配除“\r\n”之外的任意单个字符。若要匹配包括“\r\n”在内的任何字符,请使用像“[\w\W|\d\D|\s\S|]”的模式。4."^"具有两重含义:开始标记和非,如:/^a/表示以a开始的字符;当在[]中时:/[^a]/表示非a的所有字符。5."$"表示字符结尾。如:/^abc$/表示以c结束的字符。6.”{}"表示重复上一项。如/\d{2,4}/表示数字出现至少2次,最多4次。如/3{2,4}/匹配33...;333....;3333.....不匹配3和4个3相连以上的了。它的三种格式如下{n,m}表示至少3次,最多m次;{n,}至少n次;{n}恰好n次。7."?"表示{0,1}。8."+"表示{1,}。9."*"表示{0,}。注:非贪婪的重复(如??,+?,*?,{1,5}?只匹配第一个。)10."|"表示分割,即或的含义。如:/ab|cd|ef/匹配含有ab或cd或ef的字符串。11."()"包含三重用途:一是定义子表达式。二是在完整的模式中定义子模式。三是子表达式的引用。子模式的定义可以从目标串中抽取和括号中的子模式相匹配的部分。子模式的表达式的引用是指:可识别子模式的编号,提取它。如/(abc)\sis\s(string\w*)/;里面含有两个字表达式:可通过\1指(abc);\2指(string\w*); 应用如:/['"][^'"]*['"]/不能取前后同样的引号,可以这样写:/[('")[^'"]*\1]/,可起到约束作用。注:若想()里的不想被记忆,可采用(?:.....),将不会对其编号。还有(?=p),(?!p)如下:如/(javascript)?(?=\:)/ 表示匹配javascript:,但不包含:;它不匹配javascript,因为他有个条件就是后要接:;(?!p)反前向声明,要求接下来的字符不与模式p匹配,与(?=p)相反。

        正则表达式,又叫规则表达式,英文名Regular Expression,本质是操作字符串

         1、模式匹配    表单验证

         2、文本检索    搜索

         3、替换        过滤

         简单,方便,性能高

        var reg=new RegExp('规则','模式')  通过构造函数创造

        var reg=/规则/模式                通过字面量创建

       i  忽略大小写

       g  全局

       m  多行

       注:不分前后顺序

      str.match(正则)  返回数组 没有返回 null

      str.search(正则)  返回下标  没有返回-1

      str.replace(正则,替换成谁)  返回替换后的字符串

      str.replace(正则,function(s){

                       s 符合正则条件的字符串

       })

       \d  数字 /[0-9]/

       \s  空格

       \w  /[0-9a-zA-Z_]/ 单词

       \D  非数字  /[^0-9]/

       \S  非空白

       \W  非单词  /[^0-9a-zA-Z_]/

.(点)    代表任意

         \.  代表.

         \\  代表\

         \\\\  代表\\

          \/    代表/

          只要有特殊意义的都要转译

          +  {1,m}  若干个  最少1个最多不限

          ? {0,1}  可有可无

          *  {0,m}  可以没有,多了不限

          {n}  正好n个

         {n,m}  最少n个 最多m个

         {n,}  最少n个,最多不限

         {,m} × 没有这种写法

        ^  行首

         注:如果^单独使用,代表字符串行首,配合m使用会识别段落

        $  行尾

        [] 中括号

             1、[]里面的东西都是或的形式

             2、[]里面和放范围

             3、[^]  不代表行首,代表除去里面的范围

             4、其他特殊符号代表本身

         1、test()  一般配合^ &

               功能:用于检测是否于正则匹配。

               返回:布尔值,true匹配,false不匹配

               语法:reg.test(检测的内容)

          2 exec()

               功能:用于检测是否于正则匹配。

               返回:数组, 不匹配返回null

               语法:reg.test(检测的内容)

               再做验证之前:验证分两种,一种强校验,一种弱校验

            (1)验证手机号                                      /1[23457]\d{9}/

            (2)验证座机号      区号-座机号            /(0[1-9]\d-)?[1-9]\d{7}/

            (3)验证qq                                            /[1-9]\d{4,11}/

            (4)实现一个trim函数 去掉收尾空格      /^\s+|\s+$/g

            (5)中文                                                /[\u4e00-\u9fa5]/

            (6)验证年龄       18-100                       /^1[89]|[2-9]\d|100$/

            (7)邮箱:     [email protected]           /^\w{5,12}@[a-z0-9]{2,8}\.com$/

            (8)  过滤html                                            /<[^>]+>/g

        1、分组    ab+ abbbb  (ab)+

        2、匹配子级

              配合replace使用  str.replace(reg,function(s,a,b){

               s是 整体

               a是第一个括号的项

               b是第二个括号的项

          })

        3、优选级  ^(1[89]|[2-9]\d|100)$

        4、重复的子项

              abbb          /(a)(b)\2+/

今天先给大家总结到这儿,后续还会有补充

这个正则可以匹配各种 url,比如当前页面的url https://zhidao.baidu.com/question/876452972714524812.html具体解释:最左最右的 / 先忽略 是正则的界定符,表示正则的开始结束(\w+) 表示长度大于1的字符串 (\w的含义自己搜一下): 比较单纯就是表示 :\/\/ 这个表示 // 因为 / 跟上述界定符长得一样会导致程序懵逼,所以前面加了 \ 来转义([\w.]+) 表示长度大于1 由\w和 .(点) 组成的字符串\/ 同上(\S*) 除空白符号之外的的任意字符任意长度用 () 括起来表示要在代码里捕获这里面匹配的内容你问的问题比较基础,建议先自学一下正则。推荐下面的教程 http://deerchao.net/tutorials/regex/regex-1.htm学习正则不要急于求成,耐心看完+多实践