整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          JavaScript之正則表達式教程

          則表達式在js中有很多用途,最常見的是在表單驗證中,驗證一些字符串是否符合要求,如email、手機號等等,學好正則對于前端工程師來說是一個不錯的輔助技能。

          圖片來自網(wǎng)絡(luò)

          一、特殊字符

          1、$

          正則的結(jié)尾符號

          2、^

          開始符號

          3、()

          標記一個子表達式的開始和結(jié)束位置

          4、[]

          匹配括號中任意一個; 例:

          結(jié)果就是true

          5、{}

          括號里是匹配幾個,一般用來限制位數(shù);例:

          匹配位數(shù)是4~7位,7個a返回true,8個就false;

          有三種用法:

          {3}:表示匹配三位;

          {3,}:表示匹配三位及以上;

          {3,7}:表示匹配3到7位

          6、*

          表示匹配0次或多次;相當于{0,}

          7、?

          表示要匹配的是0或1位;

          8、+

          表示匹配前面的字符串一次或多次

          9、.

          匹配任意字符

          10、|

          “或”:不解釋

          11、\w

          字母、數(shù)字、下劃線

          12、\W

          非字母、數(shù)字、下劃線

          13、\d

          數(shù)字,等價于[0-9]

          14、\D

          非數(shù)字,等價于[^0-9]

          15、\s

          匹配空格

          二、js方法

          1、match方法:

          挑選相匹配的內(nèi)容:例:

          結(jié)果是“1,2,3”

          2.test方法:

          返回一個布爾值,表示是否匹配

          上述結(jié)果是“true”

          3、replace方法:

          用于將匹配正則的字符串進行替換,例:

          前面//里面是被替換的內(nèi)容,后面加的字符串是要替換的內(nèi)容。

          例:var path=req.url.replace(/\/?(?:\?.*)?$/,'').toLowerCase();

          獲取“/”后邊的路徑。

          則表達式,一個十分古老而又強大的文本處理工具,僅僅用一段非常簡短的表達式語句,便能夠快速實現(xiàn)一個非常復雜的業(yè)務(wù)邏輯。熟練地掌握正則表達式的話,能夠使你的開發(fā)效率得到極大的提升。

          下面是一些常用的正則匹配:

          1 . 校驗密碼強度

          密碼的強度必須是包含大小寫字母和數(shù)字的組合,不能使用特殊字符,長度在8-10之間。

          ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

          2. 校驗中文

          字符串僅能是中文。

          ^[\一-\龥]{0,}$

          3. 由數(shù)字、26個英文字母或下劃線組成的字符串

          ^\w+$

          4. 校驗E-Mail 地址

          同密碼一樣,下面是E-mail地址合規(guī)性的正則檢查語句。

          [\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?

          5. 校驗身份證號碼

          下面是身份證號碼的正則校驗。15 或 18位。

          15位:

          ^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$

          18位:

          ^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$

          6. 校驗日期

          “yyyy-mm-dd“ 格式的日期校驗,已考慮平閏年。

          ^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$

          7. 校驗金額

          金額校驗,精確到2位小數(shù)。

          ^[0-9]+(.[0-9]{2})?$

          8. 校驗手機號

          下面是國內(nèi) 13、15、18開頭的手機號正則表達式。(可根據(jù)目前國內(nèi)收集號擴展前兩位開頭號碼)

          ^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$

          9. 判斷IE的版本

          IE目前還沒被完全取代,很多頁面還是需要做版本兼容,下面是IE版本檢查的表達式。

          ^.*MSIE [5-8](?:\.[0-9]+)?(?!.*Trident\/[5-9]\.0).*$

          10. 校驗IP-v4地址

          IP4 正則語句。

          \b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b

          11. 校驗IP-v6地址

          IP6 正則語句。

          (([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))

          12. 檢查URL的前綴

          應(yīng)用開發(fā)中很多時候需要區(qū)分請求是HTTPS還是HTTP,通過下面的表達式可以取出一個url的前綴然后再邏輯判斷。

          if (!s.match(/^[a-zA-Z]+:\/\//)){ s = 'http://' + s;}

          13. 提取URL鏈接

          下面的這個表達式可以篩選出一段文本中的URL。

          ^(f|ht){1}(tp|tps):\/\/([\w-]+\.)+[\w-]+(\/[\w- ./?%&=]*)?

          14. 文件路徑及擴展名校驗

          驗證windows下文件路徑和擴展名(下面的例子中為.txt文件)

          ^([a-zA-Z]\:|\)\([^\]+\)*[^\/:*?"<>|]+\.txt(l)?$

          15. 提取Color Hex Codes

          有時需要抽取網(wǎng)頁中的顏色代碼,可以使用下面的表達式。

          ^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$

          16. 提取網(wǎng)頁圖片

          假若你想提取網(wǎng)頁中所有圖片信息,可以利用下面的表達式。

          \< *[img][^\>]*[src] *= *[\"\']{0,1}([^\"\'\ >]*)

          17. 提取頁面超鏈接

          提取html中的超鏈接。

          (<a\s*(?!.*\brel=)[^>]*)(href="https?:\/\/)((?!(?:(?:www\.)?'.implode('|(?:www\.)?', $follow_list).'))[^"]+)"((?!.*\brel=)[^>]*)(?:[^>]*)>

          18. 查找CSS屬性

          通過下面的表達式,可以搜索到相匹配的CSS屬性。

          ^\s*[a-zA-Z\-]+\s*[:]{1}\s[a-zA-Z0-9\s.#]+[;]{1}

          19. 抽取注釋

          如果你需要移除HMTL中的注釋,可以使用如下的表達式。

          <!--(.*?)-->

          20. 匹配HTML標簽

          通過下面的表達式可以匹配出HTML中的標簽屬性。

          <\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[\^'">\s]+))?)+\s*|\s*)\/?>

          最后推薦一款正則表達式在線測試工具

          regex101是一個非常不錯的正則表達式在線測試工具,你可以直接在線測試你的正則表達式哦。

          在JavaScript中,正則表達式(Regular Expression,簡稱RegExp)是一種強大的文本處理工具,它提供了查找、替換和提取字符串中模式匹配項的強大功能。本文將帶領(lǐng)您深入理解JavaScript中的正則表達式,并通過實例演示其常見用法與高級特性。

          1. 創(chuàng)建正則表達式

          在JavaScript中創(chuàng)建一個正則表達式有兩種方式:

          • 字面量形式:
          let regex = /pattern/flags;

          例如,查找所有的數(shù)字:

          let numbersRegex = /\d+/;
          • 構(gòu)造函數(shù)形式:
          let regex = new RegExp('pattern', 'flags');

          同樣的例子,使用構(gòu)造函數(shù)形式:

          let numbersRegex = new RegExp("\d+", "");

          注意:在構(gòu)造函數(shù)中寫入字符串時,需要對特殊字符進行轉(zhuǎn)義。

          2. 正則表達式模式

          正則表達式的主體部分是“模式”,用于描述要匹配的文本結(jié)構(gòu)。以下是一些基本模式示例

          • \d 匹配任何數(shù)字(等同于 [0-9])
          • \w 匹配字母、數(shù)字或下劃線(等同于 [a-zA-Z0-9_])
          • \s 匹配任何空白字符(包括空格、制表符、換行符等)
          • . 匹配除換行符之外的任意單個字符
          • ^ 匹配字符串的開始位置
          • $ 匹配字符串的結(jié)束位置
          • * 表示前面的元素可以重復零次或多次
          • + 表示前面的元素至少重復一次
          • ? 表示前面的元素可選,出現(xiàn)零次或一次
          • {n} 表示前面的元素必須重復n次
          • {n,} 表示前面的元素至少重復n次
          • {n,m} 表示前面的元素重復次數(shù)在n到m之間

          3. 標志位

          標志位位于正則表達式末尾,用于改變匹配行為:

          • g 全局搜索,匹配字符串中的所有符合條件的位置,而不是只找到第一個就停止。
          • i 忽略大小寫。
          • m 多行模式,使^和$可以匹配每一行的開始和結(jié)束。

          4. 正則方法應(yīng)用

          在JavaScript中,我們可以使用以下內(nèi)置的方法來操作正則表達式:

          • test():檢測字符串是否符合某個正則表達式。
          let isNumber = /\d+/.test("123");
          console.log(isNumber); // true
          • match():在字符串上執(zhí)行查找,返回匹配結(jié)果數(shù)組或者null。
          let matches = "Hello 123 World".match(/\d+/);
          console.log(matches[0]); // "123"
          • exec():在字符串上執(zhí)行查找,返回包含匹配信息的對象或者null。
          let reg = /\d+/g;
          let matchResult = reg.exec("Hello 123 World");
          console.log(matchResult[0]); // "123"
          • search():返回字符串中第一個匹配項的索引,如果沒有找到則返回-1。
          let index = "Hello 123 World".search(/\d+/);
          console.log(index); // 6
          • replace():使用新的子串替換與正則表達式匹配的子串。
          let replacedStr = "Hello 123 World".replace(/\d+/, "456");
          console.log(replacedStr); // "Hello 456 World"
          • split():根據(jù)正則表達式分隔字符串,返回一個由分割后的子串組成的數(shù)組。
          let words = "Hello World, How are you?".split(/\s*,\s*/);
          console.log(words); // ["Hello World", "How are you?"]

          5. 高級技巧

          • 非捕獲組 (?:...):不捕獲括號內(nèi)的內(nèi)容,僅作分組之用。
          • 負向前瞻 (?=...) 負向后瞻 (?!...):用來斷言后面或前面的內(nèi)容,但并不包含在匹配結(jié)果內(nèi)。
          • 反向引用 \n:匹配第n個括號里的內(nèi)容。
          let regex = /(hello)\s+(world)(?=\!)/;
          let str = "hello world!";
          let match = str.match(regex);
          console.log(match[1]); // "hello"
          console.log(match[2]); // "world"

          6.小結(jié)

          JavaScript中的正則表達式功能強大且靈活,熟練掌握這一工具能極大地提高開發(fā)效率,尤其是在數(shù)據(jù)清洗、驗證和搜索等場景。希望這篇指南能幫助你更好地理解和運用正則表達式,實際操作中還需結(jié)合具體需求進行調(diào)整和優(yōu)化。


          主站蜘蛛池模板: 色综合久久一区二区三区| 成人区精品一区二区不卡亚洲 | 国产成人AV一区二区三区无码 | 国产福利一区二区三区| 国产在线一区视频| 久久精品一区二区三区AV| 无码欧精品亚洲日韩一区夜夜嗨| 色婷婷一区二区三区四区成人网 | 国产在线不卡一区二区三区| 天堂一区人妻无码| 久久婷婷色一区二区三区| 国产激情一区二区三区| 精品在线一区二区| 在线观看视频一区二区| 日韩一区二区视频| 久久精品国产第一区二区三区 | 亚洲欧美日韩一区二区三区在线 | 波多野结衣精品一区二区三区| 人妻AV一区二区三区精品| 久久99久久无码毛片一区二区 | 国产精品美女一区二区三区 | 国产高清在线精品一区| 在线精品亚洲一区二区三区| 美女免费视频一区二区三区| 国产SUV精品一区二区88| 蜜臀Av午夜一区二区三区| 国产成人精品无码一区二区三区| 国产福利电影一区二区三区,免费久久久久久久精 | 亚洲AV无码国产精品永久一区| 亚洲日韩一区二区三区| 韩国资源视频一区二区三区| 狠狠爱无码一区二区三区| 日韩国产精品无码一区二区三区| 免费播放一区二区三区| 日韩国产一区二区| 无码精品蜜桃一区二区三区WW| 日韩电影在线观看第一区| 一区二区三区四区无限乱码| 一区二区国产精品| 久久久国产一区二区三区| 熟妇人妻一区二区三区四区|