說正則表達式之前,先來幾個常用的正則參考,方便大家使用的時候,直接拿去用,然後在開始講理論知識(嘖嘖嘖)
1: 輸入的數字值在 1-100之間,且包含1和100
number = /^(?:|[1-9][0-9]?|100)$/;
number = /^(\d{1,2}|100)$/;
2: 輸入的數字值在 0-1之間(如:0.45),且包含0和1
number = /^1$|^0(\.\d{1,})?$/;
3: 驗證身份證號
reg = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;
4: 驗證郵箱
email = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/;
5: 驗證手機號碼
1:reg = /^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$/;
2:!(/^1[34578]\d{9}$/.test(需要驗證的手機號))
6: 驗證銀行卡號19位
cardNumber = /^(\d{19})$/;
7: 驗證1-6位小數
decimal = /^[0-9]+(.[0-9]{1,6})?$/;
8: 驗證英文
english = /^[A-Za-z]+$/;
9: 驗證數字,最多有兩個小數
number = /^[0-9]+(.[0-9]{1,2})?$/;
10: 驗證1-3小數
number = /^\d{1,3}$/;
11: 更改時間日期的顯示
var start_time = "2018-06-28T09:13:11";
正則方式:start_time.replace(/-/g, '.').substr(0, 10) + ' ' + start_time.replace(/:/g, '.').substr(11, 18)
執行結果:"2018.06.28 09.13.11"
微軟上關於正則表達式的一個說明文檔,講解的挺詳細的,可以參考下~
正則表達式示例
正則表達式 | 說明 |
---|---|
/^\s*$/ | 匹配空行。 |
/\d{2}-\d{5}/ | 匹配由兩位數字、一個連字符再加五位數字組成的 ID 號。 |
/<\s*(\S+)(\s[^>])?>[\s\S]<\s*\/\1\s*>/ | 匹配 HTML 標記。 |
常用的元字符
代碼 | 說明 |
---|---|
. | 匹配除換行符以外的任意字符 |
\w | 匹配字母或數字或下劃線或漢字 |
\d | 匹配 數字 |
\b | 匹配 單詞的開始或結束 |
^ | 匹配 字符串的開始 |
$ | 匹配 字符串的結束 |
【注】:
第一個例子:
元字符^(和數字6在同一個鍵位的符號)和$都匹配一個位置,這和\b有點類似。^ 匹配你要用來查找的字符串的開頭,$匹配結尾。例如,驗證1-3小數,可以這樣寫
number = /^\d{1,3}$/;
第二個例子:
\ba\w*\b匹配以字母a開頭的單詞——先是某個單詞開始處(\b),然後是字母a,然後是任意數量的字母或數字(\w*),最後是單詞結束處(\b)。
\d+匹配1個或更多連續的數字。這裏的+是和*類似的元字符,不同的是*匹配重複任意次(可能是0次),而+則匹配重複1次或更多次。
\b\w{6}\b 匹配剛好6個字符的單詞。
第三個例子:
像[0-9]代表的含意與\d就是完全一致的:一位數字;同理[a-z0-9A-Z_]也完全等同於\w(如果只考慮英文的話)
對應上面表格中的常用元字符,你可以很直觀的看出這行正則是什麼意思,就瞬間明白了。
【重複】常用的限定符
代碼/語法 | 說明 |
---|---|
* | 重複零次或更多次 |
+ | 重複一次或更多次 |
? | 重複零次或一次 |
{n} | 重複n次 |
{n,} | 重複n次或更多次 |
{n,m} | 重複n到m次 |
【反義】常見的反義代碼
代碼/語法 | 說明 |
---|---|
\W | 匹配任意不是字母,數字,下劃線,漢字的字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意非數字的字符 |
\B | 匹配不是單詞開頭或結束的位置 |
[^X] | 匹配除了x以外的任意字符 |
^[aeiou] | 匹配除了aeiou這幾個字母以外的任意字符 |
【例子】:
<a[^>]+>匹配用尖括號括起來的以a開頭的字符串
以上就是關於正則的一些基本的知識,日常小型開發需要用到的一些正則校驗。相信在你看了這篇文章之後,應該可以足夠應付了。但是還有很多沒有提到的東西。包含一些語法和簡單的說明。你可以在網上找到更詳細的參考資料來學習它們,前提是當你需要用到它們的時候。
這裏提供一個MDN的網站,關於正則基礎的講解。希望你能有所收穫~