正则表达式和Unicode编码

正则表达式

匹配特殊字符或有特殊搭配原则的字符的最佳选择

RegExp对象

正则表达式是一种规则对象

转义字符 \

跳过语法,打印字符的文本形式

换行符 \n

文档内无法识别多空格和回车(操作系统内\r(行结束)\n,有些操作系统回车没有\r),它都会识别为一个空格
\t tab键

字符串多行编写

正常情况下,字符串不允许多行(回车)编写
在行末尾用转义字符把回车转掉

两种创建方式及其规则

var regExp = /^abc/i;//是否含有片段,i=ignoreCase 忽略大小写 g=全局匹配,遇到匹配不停下来,继续匹配
//m=多行匹配            ^=以什么开头

regExp.test(abc);返回布尔值
regExp.match(abc);返回匹配内容

var reg2 = new RegExp("abc","i");

var reg2 = new RegExp(regExp);不是同一个
var reg2 =  RegExp(regExp);是同一个

var reg = /[1234567890]/g;//有一位从1234567890中匹配
var reg = /[0-9A-z]/g;//0-9 A-z
var reg = /[^a]/g;//非a
var reg = /(abc|bcd)/g;//相当于表达式
var reg = /[\w\d]/g;

元字符

不是匹配视觉上的而是字符上的
^$开头结尾可以有效限定一个字符串

	\w 													[0-9A-z_]
	\W													[^\w]
	\d													[0-9]
	\D													[^\d]
	\s													空白字符:空格,制表tab\t,回车\r,换行\n,垂直换行\v,换页
	\b													单词边界,单词的开头和末尾
	\u													Unicode编码
	.													[^\r\n]
	$													以前面的一个字符结尾

Unicode

\u0000 16进制四位,代表很多种语言的字符(第一层的00忽略了)

Unicode编码有很多层
\u010000 - \u01ffff 这是一层

量词

	n+	 								匹配任何包含至少一个n的字符串
	n*									匹配任何包含零个或多个n的字符串
	n?									匹配任何包含零个或一个n的字符串
	n{X}								匹配包含X个n的序列的字符串
	n{X,Y}								匹配包含X个至Y个n的序列的字符串,尽量取最多个
	n{X,}								匹配包含至少X个n的序列的字符串			

验证密码强度

在这里插入图片描述



<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<style type="text/css">
  #dv{
    width: 300px;
    height:200px;
    position: absolute;
    left:300px;
    top:100px;
  }
  .strengthLv0 {
    height: 6px;
    width: 120px;
    border: 1px solid #ccc;
    padding: 2px;
  }

  .strengthLv1 {
    background: red;
    height: 6px;
    width: 40px;
    border: 1px solid #ccc;
    padding: 2px;
  }

  .strengthLv2 {
    background: orange;
    height: 6px;
    width: 80px;
    border: 1px solid #ccc;
    padding: 2px;
  }

  .strengthLv3 {
    background: green;
    height: 6px;
    width: 160px;
    border: 1px solid #ccc;
    padding: 2px;
  }
</style>
<body>
<div id="dv">
  <label for="pwd">密码</label>
  <input type="text" id="pwd" maxlength="16"><!--课外话题-->
  <div>
    <em>密码强度:</em>
    <em id="strength"></em>
    <div id="strengthLevel" class="strengthLv0"></div>
  </div>
</div>
<script src="common.js"></script>
<script>

  //获取文本框注册键盘抬起事件
  document.getElementById("pwd").onkeyup=function () {
    //每次键盘抬起都要获取文本框中的内容,验证文本框中有什么东西,得到一个级别,然后下面的div显示对应的颜色
    //如果密码的长度是小于6的,没有必要判断
//    if(this.value.length>=6){
//     var lvl= getLvl(this.value);
//      my$("strengthLevel").className="strengthLv"+lvl;
//    }else{
//      my$("strengthLevel").className="strengthLv0";
//    }
    document.getElementById("strengthLevel").className="strengthLv"+(this.value.length>=6?getLv(this.value) :0);
  };

  //给我密码,我返回对应的级别
  function getLv(pwd) {
    var lv=0;//默认是0级
    //密码中是否有数字,或者是字母,或者是特殊符号
    if(/[0-9]/.test(pwd)){
      lv++;
    }
    //判断密码中有没有字母
    if(/[a-zA-Z]/.test(pwd)){
      lv++;
    }
    //判断密码中有没有特殊符号
    if(/[^0-9a-zA-Z_]/.test(pwd)){
      lv++;
    }
    return lv;//最小的值是1,最大值是3
  }




</script>
<script>

  /*
  *
  * 密码: 数字,字母,特殊符号
  *
  * 密码: 只有数字- 或者是只有字母,或者是只有特殊符号---1级---弱
  * 两两组合: 数字和字母, 数字和特殊符号, 字母和特殊符号   -----2级----中
  * 三者都有: 数字和字母和特殊符号------3级-----强
  *
  * */

//  //获取文本框注册键盘抬起事件
//  my$("pwd").οnkeyup=function () {
//    //每次键盘抬起都要获取文本框中的内容,验证文本框中有什么东西,得到一个级别,然后下面的div显示对应的颜色
//    //如果密码的长度是小于6的,没有必要判断
//    if(this.value.length>=6){
//      var lvl=getLvl(this.value);
//      if(lvl==1){
//        //弱
//        my$("strengthLevel").className="strengthLv1";
//      }else if(lvl==2){
//        my$("strengthLevel").className="strengthLv2";
//      }else if(lvl==3){
//        my$("strengthLevel").className="strengthLv3";
//      }else{
//        my$("strengthLevel").className="strengthLv0";
//      }
//    }else{
//      my$("strengthLevel").className="strengthLv0";
//    }
//
//
//  };
//
//  //给我密码,我返回对应的级别
//  function getLvl(pwd) {
//    var lvl=0;//默认是0级
//    //密码中是否有数字,或者是字母,或者是特殊符号
//    if(/[0-9]/.test(pwd)){
//      lvl++;
//    }
//    //判断密码中有没有字母
//    if(/[a-zA-Z]/.test(pwd)){
//      lvl++;
//    }
//    //判断密码中有没有特殊符号
//    if(/[^0-9a-zA-Z_]/.test(pwd)){
//      lvl++;
//    }
//    return lvl;//1  3
//  }
//



</script>





</body>
</html>

验证用户输入的邮箱

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>title</title>

</head>
<body>
请您输入邮箱地址:<input type="text" value="" id="email"/> *<br/>
<script>
  //如果输入的是邮箱,那么背景颜色为绿色,否则为红色

  //获取文本框,注册失去焦点的事件
  document.getElementById("email").onblur = function () {
    //判断这个文本框中输入的是不是邮箱
    var reg = /^[0-9a-zA-Z_.-]+[@][0-9a-zA-Z_.-]+([.][a-zA-Z]+){1,2}$/;
    if (reg.test(this.value)) {
      this.style.border = "1px solid green";
    } else {
      this.style.border = "1px solid red";
    }
  };
</script>

</body>
</html>

校验表单

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style type="text/css">
    body {
      background: #ccc;
    }

    label {
      width: 40px;
      display: inline-block;
    }

    span {
      color: red;
    }

    .container {
      margin: 100px auto;
      width: 400px;
      padding: 50px;
      line-height: 40px;
      border: 1px solid #999;
      background: #efefef;
    }

    span {
      margin-left: 30px;
      font-size: 12px;
    }

    .wrong {
      color: red
    }

    .right {
      color: green;
    }

    .defau {
      width: 200px;
      height: 20px;
    }

    .de1 {
      background-position: 0 -20px;
    }
  </style>

</head>

<body>
<div class="container" id="dv">
  <label for="qq">Q Q</label><input type="text" id="qq"><span></span><br/>
  <label>手机</label><input type="text" id="phone"><span></span><br/>
  <label>邮箱</label><input type="text" id="e-mail"><span></span><br/>
  <label>电话</label><input type="text" id="telephone"><span></span><br/>
  <label>姓名</label><input type="text" id="fullName"><span></span><br/>
</div>
<script>

  //qq的
  checkInput(document.getElementById("qq"),/^\d{5,11}$/);
  //手机
  checkInput(document.getElementById("phone"),/^\d{11}$/);
  //邮箱
  checkInput(document.getElementById("e-mail"),/^[0-9a-zA-Z_.-]+[@][0-9a-zA-Z_.-]+([.][a-zA-Z]+){1,2}$/);
  //座机号码
  checkInput(document.getElementById("telephone"),/^\d{3,4}[-]\d{7,8}$/);
  //中文名字
  checkInput(document.getElementById("fullName"),/^[\u4e00-\u9fa5]{2,6}$/);
  //给我文本框,给我这个文本框相应的正则表达式,我把结果显示出来
  //通过正则表达式验证当前的文本框是否匹配并显示结果
  function checkInput(input,reg) {
    //文本框注册失去焦点的事件
    input.onblur=function () {
      if(reg.test(this.value)){
        this.nextElementSibling.innerText="true";
        this.nextElementSibling.style.color="green";
      }else{
        this.nextElementSibling.innerText="error";
        this.nextElementSibling.style.color="red";
      }
    };
  }

</script>

</body>
</html>

验证用户输入的是否为中文

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>title</title>
  <script src="jquery-1.12.1.js"></script>
  <script>

    //点击按钮,验证用户输入的是不是中文名字,如果是中文名字,则文本框的背景为绿色,否则为红色
    $(function () {
      //按钮的点击事件
      $("#btn").click(function () {
        var reg=/^[\u4e00-\u9fa5]{2,6}$/;
        var flag=reg.test($("#txt").val());
        if(flag){
          $("#txt").css("backgroundColor","green");
        }else{
          $("#txt").css("backgroundColor","red");
        }
      });
    });
  </script>
</head>
<body>
请输入中文:<input type="text" value="" id="txt"/><br/>
<input type="button" value="验证" id="btn"/>

</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值