zoukankan      html  css  js  c++  java
  • 如何使用正则表达式以及封装函数?

    1、正则表达式的使用方法

    (1)使用test()  方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。

    var str = '我今年18岁'
    var reg = new RegExp("[0-9]{2}","g")

    reg.test(str)      //  true

    (2)使用match()  方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配

    var str = '我今年18岁'
    var reg = new RegExp("[0-9]{2}","g")

    str.match(reg)   //  ["18"]

    (3)使用search()  用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置;没有检索字符串中指定的子字符串,就会返回-1

    var str = '我今年18岁'
    var reg = new RegExp("[0-9]{2}","g")

    str.search(reg)  //  3

    (4)使用replace() 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串

    var str = '我今年18岁'
    var reg = /[0-9]{2}/g

    str.replace(reg,"aaa")  //  我今年aaa岁

    (5)使用split()  用于把一个字符串分割成字符串数组

    var str = '我今年18岁'  
    var reg = /[0-9]{2}/g

    str.split(reg)  //  ["我今年", "岁"]

    (6)使用exec()  方法用于检索字符串中的正则表达式的匹配,该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

    var str = '我今年18岁'  
    var reg = /[0-9]{2}/g

    reg.exec(str)  //  ["18"]

    2、正则表达式的函数使用

     (1)是否带有小数

    function isDecimal(strValue ) {
      var objRegExp= /^d+.d+$/;
      return objRegExp.test(strValue);
    }
     
    (2)校验是否中文名称组成
    function ischina(str) {
      var reg=/^[u4E00-u9FA5]{2,4}$/; /*定义验证表达式*/
      return reg.test(str); /*进行验证*/
    }
     
    (3)校验是否全由8位数字组成
    function isStudentNo(str) {
      var reg=/^[0-9]{8}$/; /*定义验证表达式*/
      return reg.test(str); /*进行验证*/
    }
     
    (4)校验电话码格式
    function isTelCode(str) {
      var reg= /^((0d{2,3}-d{7,8})|(1[3584]d{9}))$/;
      return reg.test(str);
    }
     
    (5)校验邮件地址是否合法
    function IsEmail(str) {
      var reg=/^w+@[a-zA-Z0-9]{2,10}(?:.[a-z]{2,4}){1,3}$/;
      return reg.test(str);
    }
     
    (6)判断输入字符串是否为数字、字母、下划线组成
    function isValid(str) {
      return /^w+$/.test(str);
    }
     
    (7)判断输入字符串是否全部为字母
    function isletter (val){
      return /^[a-zA-Z]+$/.test(val)
     
    (8) 判断输入字符串是否全部为数字
    function isnum(val){
      return /^d+$/.test(val);
     
    (9)判断密码的强中弱
    function checkUserpwd(pwd1, pwd2, reg, errSpan, errSpanInfo) {
      if (pwd1 == pwd2) {
        if (reg.test(pwd1)) {//表示合法
        //合法里面 我们看强中弱
        var numCount = (/[0-9]/g).test(pwd1) ? 1 : 0;
        var lowCount = (/[a-z]/g).test(pwd1) ? 1 : 0;
        var uppCount = (/[A-Z]/g).test(pwd2) ? 1 : 0;
        switch (numCount + lowCount + uppCount) {
          case 3:
          errSpan.innerHTML = "强";
          break;
          case 2:
          errSpan.innerHTML = "中";
          break;
          default:
          errSpan.innerHTML = "弱";
          break;
         }
          return true;
      } else {
        errSpan.style.color = "red";
        errSpan.innerHTML = errSpanInfo;
        return false;
      }
    } else {
      errSpan.style.color = "red";
      errSpan.innerHTML = "两次输入的密码不相等";
      return false;
      }
    }
    (10)过滤骂人的文字
    function check(value){
      var reg = /(马化腾)|(sb)|(jb)/ig;
      //过滤骂人文字 
      //value.replace(reg,"*");
      if(reg.test(value)){
        alert("含有非法字符")
      }
    }
     
    3、举例说明
    <body>
    用户:<input type="text" id="username" placeholder="请以字母_$开头的6-10位"><span id="username_span"></span><br>
       <button id="btn">注册</button>
    </body>
    <script>
    var usernameInput = document.getElementById("username");
    var usernameSpan = document.getElementById("username_span");
    var btn = document.getElementById("btn");
    btn.onclick = function() {
      var username = usernameInput.value;
      var reg = /^[a-z_$][a-z0-9_$]{5,9}$/gi;
      if (reg.test(username)) {
      usernameSpan.innerHTML = "√";
      usernameSpan.style.color = "green";
    } else {
      usernameSpan.innerHTML = usernameInput.getAttribute("placeholder");
      usernameSpan.style.color = "red";
      }
    }
    </script>
     
  • 相关阅读:
    1105 Spiral Matrix (25分)(蛇形填数)
    1104 Sum of Number Segments (20分)(long double)
    1026 Table Tennis (30分)(模拟)
    1091 Acute Stroke (30分)(bfs,连通块个数统计)
    1095 Cars on Campus (30分)(排序)
    1098 Insertion or Heap Sort (25分)(堆排序和插入排序)
    堆以及堆排序详解
    1089 Insert or Merge (25分)
    1088 Rational Arithmetic (20分)(模拟)
    1086 Tree Traversals Again (25分)(树的重构与遍历)
  • 原文地址:https://www.cnblogs.com/lishixiang-007/p/11283248.html
Copyright © 2011-2022 走看看