加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-14 06:17:03 所属栏目:百科 来源:网络整理
导读:正则表达式:计算机理解的规则,强大的字符串匹配工具。简单来说,是一种规则、模式。 正则也是以对象的形式存在,创建正则两种方法: ? var re= new RegExp(“a”); // js风格 var re =/ a /; // per 风格 ? ? 我们先说一下操作字符串的几个属性,以便更

正则表达式:计算机理解的规则,强大的字符串匹配工具。简单来说,是一种规则、模式。

正则也是以对象的形式存在,创建正则两种方法:

?

var re=new RegExp(“a”);           //js风格
var re =/ a /;                 // per 风格

?

?

我们先说一下操作字符串的几个属性,以便更好的操作正则:

  1. search:返回提取所在位置,找不到返回-1。
    var str="abcefg";
    alert(str.search("a"));//位置,-1
    alert(str.search("w"));    // 0

    ?

  2. match:把所有匹配的东西全部找出来。
    var str="123 -/a 11agcccg3411";
    alert(str.match(/d/g)) ;  
    
    //1,2,3,1,4,1

    ?

  3. replace:替换成想要的东西。? ? ??
    var str="abcaa";
    var re=/a/g;
    alert(str.replace(re,"0"));
    
    //0bc00

    ?

  4. charAt:返回对应的字符。
    var str="abcdef";
    alert(str.charAt(1)); //b 返回1对应的字符    

    ?

  5. split:字符串切分。
    var str="a-b-5-1";
    var arr=str.split("-");
    alert(arr); //a,b,5,1  可以做字符串切分    

    ?

  6. substring:返回对应的字符,但不包括结束位置。
    var str="abcdef";
    alert(str.substring(1,5)); // bcde 不包括结束位置 alert(str.substring(1)); //bcdef 一个时,到结束

    ?

?

下面我们步入正题

?

1.js?大小写敏感

正则忽略大小写:" i "? (ignore)

 var er=new RegExp("a","i");
 //var er=/a/i //或者这种写法
 var str="ABc";
 alert(str.search(er));

//0

?

2.找到全部:"g" (global)

var str="123 -/a 11agcccg3411";
alert(str.match(/d+/g))    
//alert(str.match(/[0-9]+/g)) 也可以

//123,11,3411

?

3.或者: " | "(竖线)

4.元字符(方括号):" [ ] " ;

  1. 任意字符:[abc]:abc?三个其中任选一个即可 。[abc]pc: 符合的——>apc bpc cpc;
  2. 范围:[a-z]? [0-9]
  3. 排除:[^a-z] :除了a-z;? ? ? [^0-9]? :除了a-z;?? ??[^a-z0-9]? :除了a-z 0-9;

5.量词:个数

  • {n}? ?正好出现n次? ?[1-9]/d{7} ->八位电话号码
  • {n,m}? ?最少n次,最多m次??[1-9]/d{4,10} ->5?或者 11位?QQ号
  • {n,}? ?最少n次,最多不限
  • +? ? ?==? ?{1,}最少1次,若干,
  • ?? ? ==? {0,1}?可有可无? ?(0d{2,3}-)?[1-9]d{7}(-d{1,5})?->5?有无区别的固定电话,有无分机号
  • *? ? ? ==? {0,} 不建议用

?

6.转义字符:

?

  • "? . "? (点)——任意字符(尽量不要去用)? ??
    正则有一个贪婪特性,进可能匹配长的字符串

    一个过滤html标签的例子:
    <script>
         window.onload=function(){
             var oTxt1=document.getElementById("txt1");
             var oTxt2=document.getElementById("txt2");
             var Btn=document.getElementById("btn");
             
             Btn.onclick=function(){
                 var re=/<[^<>]+>/g;
                 oTxt2.value=oTxt1.value.replace(re,‘‘)
             };
         }
    </script>
    
    <textarea rows="20" cols="20" id="txt1" "></textarea>
    <input type="button" id="btn" value="过滤">
    <textarea  rows="20" cols="20" id="txt2" "></textarea>

    注意:? ? ? ? ? ? ? / < . +> /? 不完善
    ? ? ? ? ? ? ? ? ? ? ? ? ?/ <[ ^ <> ] + > /? 除了 " <> "?以外的任意字符



  • d? 数字? ? [0-9]
  • w? 英文、数字、下划线? ?[a-z 0-9 ]
  • s? ?空白字符
  • D? 除了数字? ??[^0-9]
  • W? 除了?英文、数字、下划线? ?[^a-z 0-9 ]
  • S? ?除了空白字符
  • ^? ?放在正则 行首(不在" [ ] "时??)
  • $??? 放在正则?行尾(不在" [ ] "时?)
    注意 :?通过正则找”? .? “ 时用 ‘ . ‘;
    ? ? ? ? ? ? ?通过正则找”?d? “ 时用 ‘ d ‘;


?

正则?test方法 :判断是否符合正则规则,返回ture和false 。需要注意的是,只要name一部分符合reg的要求就会返回true,这时候就需要用到^$,分别表示行首和行尾;

?

邮箱验证:

    <script>
             window.onload=function(){
                 var oTxt=document.getElementById("txt");                 
                 var oBtn=document.getElementById("btn");
                 
                 oBtn.onclick=function(){
                     var re=/^[email?protected][a-z0-9]+.[a-z]+$/i;
                     if(re.test(oTxt.value))
                     {
                         alert("合法邮箱")
                     }
                     else
                     {
                         alert("你写错了")
                     }
                 };
             }
        </script>
    </head>
    
    <body>
        <input type="text" id="txt">
        <input type="button" id="btn" value="验证">
        
    </body>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读