初识正则表达式

正则表达式的两种构造方法:

1.通过RegExp类的构造方法:

var objExp=new RegExp(pattern,flags);

pattern:必选参数 用于指定进行匹配的模式字符串

flags: 可选参数   用于指定正则表达式的标识信息 

g:全局标志

i:忽略大小写的标志

m:多行的标志 设置了,^能匹配多行的行开头,$能匹配多行的行结尾

不设置,^只能匹配字符串的行开头,$只能匹配字符串的行结尾


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

var objExp=/\d/g;


正则表达式的各种字符:

1.字符类

字符 含义

[...] 匹配指定范围内的任意一个字符 例如[012] 可以与0A1B2C的0或1或2匹配

[^...] 匹配不在指定范围内的任意一个字符 例如[^012]  可以与0A1B2C的A或B或C匹配

\d 匹配任意一个数字字符 相当于[ 0~9 ]

\D 匹配任意一个数字字符 相当于 [ ^0~9 ]

\s 匹配任意空白字符 如空格,制表符,换行符 [ \t\n\f\r ]

\S 匹配任意非空白字符  [^\t\n\f\r ]

\w 匹配任何英文字母,数字字符以及下划线[a~zA~Z0~9]

\W 匹配任何英文字母,数字字符以及下划线 [^a~zA~Z0~9]


2.量词

字符 含义

匹配前一项0次或者1次 也就是前一项是可选的

+ 匹配前一项1次或多次,但至少一次 例如 /JS+/  可以匹配JSSS

* 匹配前一项0次或者多次 也就是任意次 例如/bo*/  可以匹配 bo boo booo 

{n} 匹配前一项恰好n次,n为非负整数 例如/o{2} / 可以匹配 book

{n,} 匹配前一项至少n次 例如/o{2,}/ 可以匹配good或者goooooood

{n,m} 匹配前一项至少n次但不能超过m次例如/o{2,5}/ 可以匹配good或者goooood

n,m为非负整数 n<=m

(ps:{n,m}数字与逗号之间不能有空格)


3.指定匹配位置

字符 含义

^匹配字符串的行开头/^g/ 匹配good的g bag的g不匹配

$匹配字符串的行结尾/$g/ 匹配bag的g 不匹配good的g

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

\B匹配单词的非边界/e\b/ 匹配“i love seek”中的seek的e 不匹配love的e


4.使用选择匹配符

“|”只能匹配多个选项中的任意一项


5.分组

使用小括号将多个单独的字符或字符类组或子表达式括起来,以便处理像一个独立的单元格 用”|“ ”*“ ”+“ ” ?“来处理

例 /J(ava)?Script/ 匹配JavaScript或JScript 区别/J[ava]Script/



正则表达式的方法:

1.test()用于对一个指定的字符串执行模式匹配 如果搜索到匹配的字符 返回True 否则返回false

语法:RegExp.test(str)

实例 关于固定电话的匹配

<script>
        /*var objExp=/\d/;
        var flags=objExp.test("abc");
        alert(flags);*/
        function checkTel(){
            var str=form1.tel.value;
            var objExp=/^((\d{3}-)?\d{8})$|^(\d{4}-)?\d{7,8}$/;
            var flags=objExp.test(str);
            if(flags){
                alert("您输入的号码合法");
            }else{
                alert("您输入的号码不合法");
            }
        }
</script>

<body>
<form name="form1" method="post" action="">
    请输入电话号码:<input name="tel" type="text" id="tel"/>
    <input name="check" type="button" value="检测" onclick="checkTel()"/>
</form>
</body>

 
 

2.exec( )方法 返回值不是true false 而且当没有到匹配的字符时 返回null 否则返回一个数组 数组的第一个元素包含与正则表达式相匹配的字符串 其他元素包含的是匹配的各个分组 用括号括起来的子表达式

语法:RegExp.exec(str)

实例 从身份证中获取出生年月 

<script>
        function getBirthday(){
            var str=form1.IDCard.value;
            var objExp=/(\d{6})(\d{4})(\d{2})(\d{2})(\d{4})/;
            var arr=objExp.exec(str);
            if(arr!=null){
                alert("出生日期为:"+arr[2]+"年"+arr[3]+"月"+arr[4]+"日");
            }else{
                alert("输入的身份证不合法");
            }
        }
</script>


<body>
<form name="form1" method="post" action="">
    请输入身份证号码:
    <input type="text" name="IDCard" id="IDCard" size="50"/>
    <br/>
    <input type="button" value="从身份证中获取出身年月日" onclick="getBirthday()"/>
</form>
</body>


若有错误 欢迎指正






猜你喜欢

转载自blog.csdn.net/hellom_m/article/details/52074255
今日推荐