正则表达式

正则表达式:

定义,一个正则表达式是由普通字符(a~z)以及特殊字符(元字符)组成的模式字符串。来描述查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配

1、字符类(每次只能匹配一个)

[...]例子/[012]/意思是匹配方括号里面的任意一个字符就可以

[^...]例子/[012]/意思是匹配除了方括号里的字符的任意字符

.   匹配除了换行和回车之外的任意字符,相当于[^\r\n]

\d 匹配任意一个数字字符,相当于[0-9] /\d/可以匹配wy3k里的3

\D 匹配任意非数字字符/\D/

\s 匹配任意空白字符,如空格、制表符

\S 匹配任意非空白字符

\w 匹配任何英文字母、数字字符以及下划线

2、量词

? 匹配前一项0次或1/JS?/可以匹配JScript中的JS或者JavaScropt中的J

+ 匹配前一项1次或多次,但至少一次 /JS+/ 可以匹配JS也可以是JSSSSSSS

* 匹配前一项0次或多次,也就是任意次

{n} 匹配前一项恰好n次,其中的n次为非负整数/o{2}/比如book里面的两个o或者booook里连续的两个o

{n,}匹配前一项至少n/o{2}/,至少两个o

{n,m}匹配前一项至少n次至多m次,就是n-m次,在使用的时候数字与逗号之间不能有空格

3、指定匹配位置

^ 起始位置,字符串的行开头,^必须出现在指定字符串的最前面才起作用

/^g/匹配good中的g但不匹配page里的g

$ 匹配字符串的行结尾,$必须出现在指定字符串的最后才起作用/g$/匹配bag中的g但不匹配goodg

\b 匹配单词边界 /e\b/匹配“i love seek”中lovee但不匹配seek里的e

\B 匹配单词的非边界

4、使用选择匹配符

正则表达式选择匹配符只有一个“|”使用它可以匹配指定的多个选择中的任意一项。比如/World|Dream/可以匹配one World one Dream中的WorldDream

5、分组

分组就是使用小括号将多个单独的字符或字符类组合成子表达式,以便可以像处理一个独立的单元那样用|*+或者?等来处理他们比如/J(ava)?Script/可以匹配JavaScript也可以匹配JScript

创建正则表达式:

1、通过RegExp类的构造方法创建

语法格式;new RegExp(pattern[,flags])

Pattern:必选,用于指定需要进行匹配的模式字符串

Flags:可选,用于指定正则表达式的标志信息,

g:全局标志,如果设置了该标志,对某个文本执行搜索或替换时将对文本中的所有匹配部分起作用,否则仅搜索或替换第一次匹配的内容。

i:忽略大小写标志。

m:多行标志,如果不设置这个标志,那么^只能匹配字符串的开头,$只能匹配字符串的结尾。

var objExp=new RegExp("\\d",g);//匹配全文中的内容中0-9中的任意一个数字

2、通过正则表达式字面量创建RegExp对象

正则表达式字面量由两条斜线//中间加入模式匹配字符串组成。如果还要指定标识信息,则在最后的斜线/后面加上标志信息,比如g或者i.

var exp=/\d/g;

3、使用test()方法进行模式匹配

Test方法用于对一个指定的自出川执行模式进行匹配,如果搜索到匹配的字符返回true否则返回false

var exp=/\d/g;
var flag=exp.test("123acb");
alert(flag);

==-------------------------------------

<body>
<form name="form1" method="post" action="">
    <input type="text" name="tel" id="tel">
    <input type="button" name="check" id="check" value="检测" οnclick="checkTel()";>
</form>
<script>
    function checkTel(){
        var tel=form1.tel.value;
        var exp=/^((\d{3}-)?\d{8})$|^((\d{4}-)?\d{7,8})$/;
        if(exp.test(tel)==true){
            alert("输入电话号码合法");
        }else{
            alert("输入电话号码不合法");
        }
    }
</script>
</body>

Test()方法的局限是只能返回truefalse

4、使用exec方法进行模式匹配

Exec方法返回值不是truefalse而是当没有搜索到匹配的字符时返回空,否则返回一个数组,这个数组的第一个元素包含与正则表达式相匹配的字符串,其他元素包含的是匹配的各个分组(用括号括起来的子表达式)

语法格式:

regEXP.exec(str)

<body>
<form name="form1" method="post" action="">
    请输入电话号码:<input type="text" name="tel" id="tel">
    <input type="button" name="check" id="check" value="检测" οnclick="checkTel();">
    请输入身份证号:<input type="text" name="idCard" id="idCard">
    <input type="button" name="check1" id="check1" value="检测" οnclick="checkIdCard();">
</form>
<script>
    function checkTel(){
        var tel=form1.tel.value;
        var exp=/^((\d{3}-)?\d{8})$|^((\d{4}-)?\d{7,8})$/;
        if(exp.test(tel)==true){
            alert("输入电话号码合法");
        }else{
            alert("输入电话号码不合法");
        }
    }
    function checkIdCard(){
        var idCard=form1.idCard.value;
        var regExp=/(\d{6})(\d{8})(\d{4})/;
        var arr=regExp.exec(idCard);
        if(arr!=null){
            alert("出生日期为:"+arr[2]);//下标为0得到整个匹配结果,为1得到第一个小括号的匹配结果,为2得到第二个小括号匹配结果,为3得到第三个小括号匹配结果


        }
        else{
            alert("输入身份证号不合法");
        }
    }
</script>
</body>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值