站长资源
全栈工程师站点

js正则表达式的入门浅析

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

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

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

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

search:返回提取所在位置,找不到返回-1。

var str="abcefg";
alert(str.search("a"));//位置,-1
alert(str.search("w"));    // 0

match:把所有匹配的东西全部找出来。

var str="123 -/a 11agcccg3411";
alert(str.match(/\d/g)) ;  

//1,2,3,1,1,3,4,1,1

replace:替换成想要的东西。  

var str="abcaa";
var re=/a/g;
alert(str.replace(re,"0"));

//0bc00

charAt:返回对应的字符。

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

split:字符串切分。

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

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.元字符(方括号):” [ ] ” ;

任意字符:[abc]:abc 三个其中任选一个即可 。[abc]pc: 符合的——>apc bpc cpc;

范围:[a-z]  [0-9]

排除:[^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} 可有可无   (0\d{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=/^\w+@[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>

本文出处:来自互联网信息共享,请勿相信收费信息站长资源 » js正则表达式的入门浅析

评论 抢沙发

评论前必须登录!