<font id="zqva1"></font>
<rt id="zqva1"></rt>
  • <tt id="zqva1"></tt>
    <cite id="zqva1"></cite>

    <cite id="zqva1"><noscript id="zqva1"></noscript></cite>
      <rp id="zqva1"><meter id="zqva1"></meter></rp>

        <cite id="zqva1"></cite>
          <b id="zqva1"></b>
          <rp id="zqva1"></rp>
          <cite id="zqva1"></cite>

          <rt id="zqva1"></rt>

        1. <rp id="zqva1"></rp>

          javascript較全常用的表達正則驗證,js中采用test()方法

          時間:?2017-10-20閱讀:?2462標簽:?正則

          RegExp對象

          正則表達式描述了字符的模式對象。當您檢索某個文本時,可以使用一種模式來描述要檢索的內容。RegExp 就是這種模式。
          var patt=new RegExp(pattern,modifiers);
          //等價于
          var patt=/pattern/modifiers;//字面量(推薦) 必須用(//)來包裹pattern

          模式pattern描述了一個表達式模型。修飾符(modifiers)描述了檢索是否是全局,區分大小寫等。i : 表示區分大小寫字母匹配。m :表示多行匹配。g : 表示全局匹配。

          ?test()的使用

          test 方法用于正則規則在指定的字符串中是否具有符合的匹配結果,如果匹配到則返回true,否則返回false。

          let reg = /^[1-9]\d*$/;  
          console.log(reg.test('123'));     //返回true

          注意在非全局模式下使用,如果在全局模式下,匹配結果將會影響下一次匹配

          let reg = /^[1-9]\d*$/g; //這個/g為全局模式 
          console.log(reg.test('123'));     //返回true
          console.log(reg.test('123'));     //返回false

          exec方法

          exec方法返回的是對應匹配的數組,如果沒有匹配則返回null

          let r = /(\d+)-(\w+)/;
          console.log(r.exec("2017-love-b"));//返回整個匹配的字符串
          /*
          [0:"2013-love",1:"2017",2:"love",index:0,input:"2017-love-b"]
          */

          exec的方法功能較為強大,而我們常規使用匹配,只需要要一次結果即可,個人更推薦采用test()的非全局方式,基本可以應付常規的開發了

          Js常用正則

          驗證手機號: /^(((13[0-9]{1})|(147)|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\d{8})$/;

          驗證郵箱: /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/;

          驗證數字組成:/^[0-9]{1,20}$/ (0-9的數組,1到20位)

          驗證賬號:/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/ (只能輸入5-20長度,字母開頭,可帶數字,‘_’,'.')
          驗證密碼:/^(\w){6,20}$/ (只能輸入6-20個字母、數字、下劃線)

          驗證中文姓名:/^([\u4e00-\u9fa5]{2,20}|[a-zA-Z\.\s]{1,20})$/ (2個字以上的中文名稱)

          驗證普通電話、傳真號碼: /^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/ (可以“+”開頭,除數字外,可含有“-” )

          驗證郵政編碼:/^[a-zA-Z0-9 ]{3,12}$/

          驗證搜索關鍵詞:/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>/?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;'\,.<>?]{0,19}$/

          驗證IP地址: /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/

          驗證URL:/(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/

          驗證數字:

          /^\d+$/  //非負整數(正整數 + 0) 
          /^[0-9]*[1-9][0-9]*$/  //正整數 
          /^((-\d+)|(0+))$/  //非正整數(負整數 + 0) 
          /^-[0-9]*[1-9][0-9]*$/  //負整數 
          /^-?\d+$/    //整數 
          /^\d+(\.\d+)?$/  //非負浮點數(正浮點數 + 0) 
          /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/  //正浮點數 
          /^((-\d+(\.\d+)?)|(0+(\.0+)?))$/  //非正浮點數(負浮點數 + 0) 
          /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/  //負浮點數 
          /^(-?\d+)(\.\d+)?$/  //浮點數

          驗證15/18位身份證

          var vcity={ 11:"北京",12:"天津",13:"河北",14:"山西",15:"內蒙古",  
                      21:"遼寧",22:"吉林",23:"黑龍江",31:"上海",32:"江蘇",  
                      33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山東",41:"河南",  
                      42:"湖北",43:"湖南",44:"廣東",45:"廣西",46:"海南",50:"重慶",  
                      51:"四川",52:"貴州",53:"云南",54:"西藏",61:"陜西",62:"甘肅",  
                      63:"青海",64:"寧夏",65:"新疆",71:"臺灣",81:"香港",82:"澳門",91:"國外"  
                     };  
            
          checkCard = function()  
          {  
              var card = document.getElementById('card_no').value;  
              //是否為空  
              if(card === '')  
              {  
                  alert('請輸入身份證號,身份證號不能為空');  
                  document.getElementById('card_no').focus;  
                  return false;  
              }  
              //校驗長度,類型  
              if(isCardNo(card) === false)  
              {  
                  alert('您輸入的身份證號碼不正確,請重新輸入');  
                  document.getElementById('card_no').focus;  
                  return false;  
              }  
              //檢查省份  
              if(checkProvince(card) === false)  
              {  
                  alert('您輸入的身份證號碼不正確,請重新輸入');  
                  document.getElementById('card_no').focus;  
                  return false;  
              }  
              //校驗生日  
              if(checkBirthday(card) === false)  
              {  
                  alert('您輸入的身份證號碼生日不正確,請重新輸入');  
                  document.getElementById('card_no').focus();  
                  return false;  
              }  
              //檢驗位的檢測  
              if(checkParity(card) === false)  
              {  
                  alert('您的身份證校驗位不正確,請重新輸入');  
                  document.getElementById('card_no').focus();  
                  return false;  
              }   
              return true;  
          };  
            
            
          //檢查號碼是否符合規范,包括長度,類型  
          isCardNo = function(card)  
          {  
              //身份證號碼為15位或者18位,15位時全為數字,18位前17位為數字,最后一位是校驗位,可能為數字或字符X  
              var reg = /(^\d{15}$)|(^\d{17}(\d|X)$)/;  
              if(reg.test(card) === false)  
              {  
                  return false;  
              }  
            
              return true;  
          };  
            
          //取身份證前兩位,校驗省份  
          checkProvince = function(card)  
          {  
              var province = card.substr(0,2);  
              if(vcity[province] == undefined)  
              {  
                  return false;  
              }  
              return true;  
          };  
            
          //檢查生日是否正確  
          checkBirthday = function(card)  
          {  
              var len = card.length;  
              //身份證15位時,次序為省(3位)市(3位)年(2位)月(2位)日(2位)校驗位(3位),皆為數字  
              if(len == '15')  
              {  
                  var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;   
                  var arr_data = card.match(re_fifteen);  
                  var year = arr_data[2];  
                  var month = arr_data[3];  
                  var day = arr_data[4];  
                  var birthday = new Date('19'+year+'/'+month+'/'+day);  
                  return verifyBirthday('19'+year,month,day,birthday);  
              }  
              //身份證18位時,次序為省(3位)市(3位)年(4位)月(2位)日(2位)校驗位(4位),校驗位末尾可能為X  
              if(len == '18')  
              {  
                  var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;  
                  var arr_data = card.match(re_eighteen);  
                  var year = arr_data[2];  
                  var month = arr_data[3];  
                  var day = arr_data[4];  
                  var birthday = new Date(year+'/'+month+'/'+day);  
                  return verifyBirthday(year,month,day,birthday);  
              }  
              return false;  
          };  
            
          //校驗日期  
          verifyBirthday = function(year,month,day,birthday)  
          {  
              var now = new Date();  
              var now_year = now.getFullYear();  
              //年月日是否合理  
              if(birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day)  
              {  
                  //判斷年份的范圍(3歲到100歲之間)  
                  var time = now_year - year;  
                  if(time >= 3 && time <= 100)  
                  {  
                      return true;  
                  }  
                  return false;  
              }  
              return false;  
          };  
            
          //校驗位的檢測  
          checkParity = function(card)  
          {  
              //15位轉18位  
              card = changeFivteenToEighteen(card);  
              var len = card.length;  
              if(len == '18')  
              {  
                  var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);   
                  var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');   
                  var cardTemp = 0, i, valnum;   
                  for(i = 0; i < 17; i ++)   
                  {   
                      cardTemp += card.substr(i, 1) * arrInt[i];   
                  }   
                  valnum = arrCh[cardTemp % 11];   
                  if (valnum == card.substr(17, 1))   
                  {  
                      return true;  
                  }  
                  return false;  
              }  
              return false;  
          };  
            
          //15位轉18位身份證號  
          changeFivteenToEighteen = function(card)  
          {  
              if(card.length == '15')  
              {  
                  var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);   
                  var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');   
                  var cardTemp = 0, i;     
                  card = card.substr(0, 6) + '19' + card.substr(6, card.length - 6);  
                  for(i = 0; i < 17; i ++)   
                  {   
                      cardTemp += card.substr(i, 1) * arrInt[i];   
                  }   
                  card += arrCh[cardTemp % 11];   
                  return card;  
              }  
              return card;  
          };

          待補充......如有錯誤請指正!

          站長推薦

          1.阿里云: 本站目前使用的是阿里云主機,安全/可靠/穩定。點擊領取2000元代金券、了解最新阿里云產品的各種優惠活動點擊進入

          2.騰訊云: 提供云服務器、云數據庫、云存儲、視頻與CDN、域名等服務。騰訊云各類產品的最新活動,優惠券領取點擊進入

          3.廣告聯盟: 整理了目前主流的廣告聯盟平臺,如果你有流量,可以作為參考選擇適合你的平臺點擊進入

          鏈接: http://www.modern-decoration.com.cn/article/detial/6

          JS 常用正則表達式備忘錄

          提取變量的第一個匹配項;提取數組中的所有匹配項;匹配任意字符;匹配字母表中的字母;匹配特定的數字和字母;匹配一行中出現一次或多次的字符

          17 個案例帶你 5 分鐘搞定 Linux 正則表達式

          正則表達式是一種字符模式,用于在查找過程中匹配制定的字符。元字符通常在Linux中分為兩類:Shell元字符,由Linux Shell進行解析;正則表達式元字符,由vi/grep/sed/awk等文本處理工具進行解析;

          超好用的6種正則表達式,前端開發人員必知

          正則表達式已經成為程序員的必備工具。幾乎所有流行的編程語言都支持正則表達式,原因如下:正則表達式為開發人員提供了強有力的工具,使之能快速執行需要幾十行代碼才能完成的任務。本文主要研究前端開發人員經常要面對的六大文本處理和操作任務

          JavaScript 正則表達式

          正則表達式(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE)使用單個字符串來描述、匹配一系列符合某個句法規則的字符串搜索模式。搜索模式可用于文本搜索和文本替換。

          js正則

          正則表達式是構成搜索模式(search pattern)的字符序列。當您搜索文本中的數據時,您可使用搜索模式來描述您搜索的內容。正則表達式可以是單字符,或者更復雜的模式

          javascript正則表達式:匹配所有html標簽

          這個正則表達式也是收集于網絡,但是我可以看懂,首先,html標簽肯定是以<符號開始的,以>符號結束(不管是不是自閉合),只是中間有點糾結,可能有字符,數字,引號,換行符——但是,卻萬萬沒有>,因為有它的話html標簽就結束了

          理解Javascript的正則表達式

          相信很多人第一次見到正則表達式的第一印象都是懵逼的,對新手而言一個正則表達式就是一串毫無意義的字符串,讓人摸不著頭腦。但正則表達式是個非常有用的特性,不管是Javascript、PHP、Java還是Python都有正則表達式。儼然正則表達式已經發展成了一門小語言

          JS 正則表達式^$詳解,^與$同時寫表示什么意思?

          對于初學正則的同學來說,^$這兩個看似簡單的字符卻在使用中總讓匹配結果超出我們的預期,^什么時候表示行首什么時候表示反義?^ $兩個一起寫表示什么含義?今天我們就來詳細聊聊這兩個字符。

          前端的正則表達式:基本概念

          正則表達式(regex)是定義搜索模式的字符序列。由于對程序員的日常工作非常有用,所以在 JavaScript 中也支持它。在這個系列文章中,我會向你展示其工作方式以及其實際用途

          常用正則表達式

          將下一個字符標記為一個特殊字符、或一個原義字符、或一個向后引用、或一個八進制轉義符。^匹配輸入字符串的開始位置。如果設置了RegExp對象的Multiline屬性,$匹配輸入字符串的結束位置

          內容以共享、參考、研究為目的,不存在任何商業目的。其版權屬原作者所有,如有侵權或違規,請與小編聯系!情況屬實本人將予以刪除!

          文章投稿關于web前端網站點搜索站長推薦網站地圖站長QQ:522607023

          小程序專欄: 土味情話心理測試腦筋急轉彎幽默笑話段子句子語錄成語大全運營推廣

          国产精品高清视频免费 - 视频 - 在线观看 - 影视资讯 - 唯爱网