正则表达式语法大全
前言:一般開發中都會接觸到正則表達式,作為一名合格的前端,也應該了解一下正則表達式編寫原則,便于自己也能快速編寫想要的正則表達式。
1、作用(正則表達式是一種字符串匹配的模式)
數據驗證:比如電話號碼、郵箱等
替換文本:快速找到特定文本,用于替換
快速提取字符串:基于匹配原則,快速從文檔中查找或提取子字符串
2、語法(普通字符+特殊字符)
普通字符
[abc] 匹配[...]的所有字符
[^abc] 取反,除了[...]的其他字符
[A-Z] 區間字母A到Z
. 匹配除(\n換行符 \r 回車符)的任何單個字符
\s \S 匹配所有,\s所有空白符,包括換行 \S非空白符,不包括換行
\w 匹配字母、數字、下劃線
特殊字符
$ 結尾位置 (匹配$字符----\$)
^ 開始位置(匹配$字符----\^)
() 子表達式開始和結束(匹配字符----\(? ?和? \))
* 匹配零次或多次(匹配字符----\*)
+ 匹配一次或多次(匹配字符----\+)
? 匹配零次或一次(匹配字符----\?)
| 兩項間的一個(匹配字符----\|)
限定符
{n} n為非負整數,匹配n次
{n,} n為非負整數,至少n次
{n,m} n為非負整數,n<=m,最少n次,最多m次
修飾符
i 不區分大小寫
g 全局匹配
m 多行匹配
s 特殊字符遠點包含換行符
3、常用場景
- 16進制顏色? ??/^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/??? ?以#開始 ,6或3個字符(A-F、a-f、0-9)結尾
- 電話號碼??/^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/? ? ??以1開頭,3可跟任一數字(\d),4可跟5-9,5可跟0-3或5-9 ,6后2567其中一個,7后是0-8,8后任一數字,9后是0-3或3-5,其余8位是任意數字(\d{8})
- 身份證號? ?/^[1-9]\d{5}(19|20|21)\d{2}(0[1-9]|10|11|12)(0[1-9]|[1-2]\d|30|31)\d{3}[\dX]$/? ? ???第一位在0-9區間,后面是5位任意數字,4位年份(19、20、21開頭,后兩位任意),兩位代表月份(0開頭的1-9或者是10、11、12),兩位日期(01-31),三位順序碼,最后一位是校驗碼,可數字可X
- 網址? ? ?/^((https?):)?\/\/([^?:/]+)(:(\d+))?(\/[^?]*)?(\?(.*))?/
- 郵箱? ??^[A-Za-z0-9-_\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$? ? ? ?名稱有漢字([\ue00-\u9fa5])、字母([a-zA-z])、數字、下劃線、中劃線,域名有數字、字母、下劃線、中劃線
4、使用方法
字符串.match(正則):返回符合的字符串,若不滿足返回null
字符串.search(正則):返回搜索到的位置,若非一個字符,則返回第一個字母的下標,若不匹配則返回-1
字符串.replace(正則,新的字符串):找到符合正則的內容并替換
正則.test(字符串):在字符串中查找符合正則的內容,滿足則返回true,反之為false
說明:new RegExp(規則).test(字符串)和上面寫法作用相同
總結
- 上一篇: 学成在线--18.新增课程(课程分类查询
- 下一篇: Django项目--静态首页的数据缓存(