JavaScript
七、正则表达式
正则表达式(regular expression)提供了一种字符模式匹配和文本检索与替换的模板,来验证客户端的输入数据的合法性
通过客户端验证,可以节约大量的服务器端的系统资源,并且提供更好的用户体验。
一个正则表达式是由普通字符(如a~z)以及特殊字符(元字符)组成的模式字符串。它描述的是在查找文字主体时待匹配的一个或多个字符串。
正则表达式作为一个模板,将某个字符串与所搜索的字符串进行匹配的操作。
7.1 模式匹配字符串
1.字符类
2.量词
3.指定匹配位置
4.使用选择匹配符
5.分组
7.2 正则表达式的创建
正则表达式的格式:
var 变量名=/正则表达式/;
例:var a=/\d{3}/; 匹配三个数字
var s=/[a-z]?/; a-z之间的字母最多出现一次
7.3 正则表达式的判定
1. test()方法
用于对一个指定的字符串执行模式匹配,如果匹配到,返回true,匹配不到,返回false。
格式:变量名.test(判断传递过来的值);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>正则表达式</title>
<script>
var str=/\d/; //匹配的是一个数字
//var jieguo=str.test("abc"); //false
var jieguo=str.test(3); //true
alert("匹配出来的结果是:"+jieguo);
</script>
</head>
<body>
</body>
</html>
2. exec()方法
当没有匹配到,返回null,否则返回一个数组。这个数组的第一个元素包含与正则表达式相匹配的字符串,其他元素包含的是匹配的各个分组(用括号括起来的子表达式)
格式:
变量名.exec(“值”);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>正则表达式</title>
<script>
// var s=str.exec("abd"); null
// alert(s); */
//从身份证号提取出生年月日 413236 19900223 0867
var sfz=413236199002230867;
//声明身份证号的正则表达式
var haoma=/(\d{6})(\d{8})(\d{4})/
//做匹配
var jieguo=haoma.exec(sfz);
alert(jieguo);
</script>
</head>
<body>
</body>
</html>
数组中元素的获取 根据下标定位,下标还是从0开始。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>正则表达式</title>
<script>
//从身份证号提取出生年月日 413236 19900223 0867
var sfz=413236199002230867;
//声明身份证号的正则表达式
var haoma=/(\d{6})(\d{8})(\d{4})/
//做匹配
var jieguo=haoma.exec(sfz);
// alert(jieguo);
//获取数组中的第三个元素
alert(jieguo[2]);
</script>
</head>
<body>
</body>
</html>
数组的最后一个元素数字对不上(0867弹出了0850)……可能和数据类型容纳的长度有关。放在表单里试试
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="03_for语句.html" method="GET" name="form01">
用户名: <input type="text" name="t" maxlength="20" size="30"><br><br>
<input type="button" value="检测" onclick="show()">
</form>
<script>
function show(){
//从身份证号提取出生年月日 413236 19900223 0867
var sfz=form01.t.value;
//声明身份证号的正则表达式
var haoma=/(\d{6})(\d{8})(\d{4})/
//做匹配
var jieguo=haoma.exec(sfz);
// alert(jieguo);
//获取数组中的第三个元素
alert(jieguo[3]);
}
</script>
</body>
</html>
就没问题了