日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript从入门到放弃 -(六)正则表达式

發布時間:2024/9/27 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript从入门到放弃 -(六)正则表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正則表達式

  • 1. 正則表達式概述
    • 1.1 什么是正則表達式
    • 1.2 正則表達式的特點
  • 2. 正則表達式在JavaScript中的使用
    • 2.1 創建正則表達式
      • 2.1.1 通過調用 RegExp 對象的構造函數創建
      • 2.1.2 通過字面量創建
    • 2.2 test測試正則表達式
  • 3. 正則表達式中的特殊字符
    • 3.1 正則表達式的組成
    • 3.2 邊界符
    • 3.3 字符類
      • 3.3.1 [ ] 方括號
      • 3.3.2 [ - ] 方括號(內部) 范圍符-
      • 3.3.3 字符組合
      • 3.3.4 [ ^ ] 方括號(內部) 取反符^
    • 3.4 量詞符
    • 案例:用戶名驗證
    • 3.5 括號總結及正則驗證工具
      • 3.5.1 中括號
      • 3.5.2 大括號
      • 3.5.3 小括號
      • 3.5.4 正則表達式在線驗證-菜鳥工具
    • 3.6 預定義類及座機號碼、表單驗證案例
      • 3.6.1 預定義類(也稱元字符)
      • 3.6.2 座機號碼驗證案例
      • 3.6.3 表單驗證案例
  • 4. 正則表達式中的替換及敏感詞過濾案例
    • 4.1 replace 替換
    • 4.2 正則表達式參數
  • 5. 常用正則表達式
    • 5.1 數字校驗
    • 5.2 字符校驗
    • 5.3 特殊需求處理



學習目標

  • 了解正則表達式的作用;
  • 能夠寫出簡單的正則表達式;
  • 能夠使用正則表達式對表單進行驗證;
  • 能夠使用正則表達式替換內容。

學習內容:

  • 正則表達式概述;
  • 正則表達式在JavaScript中的使用;
  • 正則表達式中的特殊字符;
  • 正則表達式中的替換。


  • 1. 正則表達式概述


    1.1 什么是正則表達式

    正則表達式(Regular Expression)是用于匹配字符串中字符組合的模式。在JavaScript中,正則表達式也是對象(是作為對象的形式存在的)

    正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本。
    例如驗證表單:用戶名表單只能輸入英文字母、數字或者下劃線, 昵稱輸入框中可以輸入中文(匹配)。此外,正則表達式還常用于過濾 掉頁面內容中的一些敏感詞(替換),或從字符串中獲取我們想要的特定部分(提取)等 。
    其他語言也會使用正則表達式,本節內容主要學習如何利用 JavaScript 正則表達式完成表單驗證。

    1.2 正則表達式的特點

  • 靈活性、邏輯性和功能性非常的強;
  • 可以迅速地用極簡單的方式達到字符串的復雜控制;
  • 對于剛接觸的人來說,比較晦澀難懂。比如驗證郵箱: ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
  • 實際開發,一般都是直接復制寫好的正則表達式,但是要求會使用正則表達式并且根據實際情況修改正則表達式。 比如驗證用戶名:/^[a-z0-9_-]{3,16}$/
  • 2. 正則表達式在JavaScript中的使用

    2.1 創建正則表達式

    在 JavaScript 中,可以通過兩種方式創建一個正則表達式

    2.1.1 通過調用 RegExp 對象的構造函數創建

    1). 語法格式:

    var 變量名 = new RegExp(/表達式/);

    2). 應用示例:

    var regexp = new RegExp(/123/); // 要求必須輸入 “123”

    如果正則表達式將會改變,或者它將會從用戶輸入等來源中動態地產生,就需要使用構造函數來創建正則表達式。

    2.1.2 通過字面量創建

    1) 語法格式:

    var 變量名 = /表達式/;

    2) 應用示例:

    Var rg = /123/

    如果該正則表達式是始終保持不變的,使用字面量創建正則可獲得更好的性能。

    通常采用字面量創建,這樣代碼更簡潔。


    2.2 test測試正則表達式

    test() 正則對象方法(正則表達式的專門方法),用于檢測字符串是否符合該規則,該對象會返回 true 或 false,其參數是測試字符串。

    1)語法規范:

    regexObj.test(str)
  • regexObj 是寫的正則表達式
  • str 要測試的文本
  • 2)應用示例:

    var rg = /123/; console.log(rg.test(123)); // 返回true

    3. 正則表達式中的特殊字符


    3.1 正則表達式的組成

    一個正則表達式可以由簡單的字符構成,比如 /abc/,也可以是“簡單”+“特殊字符”的組合,比如 /ab*c/ 。其中特殊字符也被稱為元字符,是在正則表達式中具有特殊意義的專用符號,如 ^ 、$、+ 等。

    更多特殊字符請參考:

    • MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions
    • jQuery API手冊: 正則表達式;
    • 正則測試工具: https://tool.oschina.net/regex

    下面把元字符劃分為幾類進行學習

    3.2 邊界符

    正則表達式中的邊界符(位置符)用來提示字符所處的位置,主要有兩個字符。

    邊界符說明
    ^表示匹配行首的文本(以誰開始)
    $表示匹配行尾的文本(以誰結束)

    應用示例:

    示例一

    // 邊界符 ^ $ var rg = /abc/; // 正則表達式里不需要加引號,不論其是何種數據類型 console.log(rg.test('abc')); // 返回 true console.log(rg.test('aabc')); // 返回 true console.log(rg.test('abcc')); // 返回 true

    解釋:/abc/ 只要包含有abc這個字符串,返回的都是true。
    注:它僅能匹配 “abc” 字符按照順序同時出現的情況。

    示例二

    var reg = /^abc/; // 表示以 abc 開頭的 console.log(rg.test('abc')); // 返回 true console.log(rg.test('aabc')); // 返回 false,沒有以abc開頭 console.log(rg.test('abcc')); // 返回 true

    示例三

    var reg = /^abc$/; // 精確匹配,必須是abc才符合規范(全字匹配) console.log(rg.test('abc')); // 返回 true console.log(rg.test('abcabc')); // 返回 false console.log(rg.test('aabc')); // 返回 false console.log(rg.test('abcc')); // 返回 false

    3.3 字符類

    字符類表示有一系列字符可供選擇,只要匹配其中一個就可以了。所有可供選擇的字符都放在方括號內。

    3.3.1 [ ] 方括號

    示例一

    var rg = /[abc]/; console.log(rg.test('black')) // 返回 true console.log(rg.test('color')) // 返回 true console.log(rg.test('red')) // 返回 false

    解釋: 字符串中,只要包含 abc 中任意一個字符,都返回 true 。

    示例二

    var rg = /^[abc]$/; // 三選一:只有是 a 或 b 或 c 才返回 true console.log(rg.test('aa')) // 返回 false console.log(rg.test('a')) // 返回 true

    3.3.2 [ - ] 方括號(內部) 范圍符-

    方括號內部加上 - (短橫線), 連接的意思,表示范圍。

    應用示例:
    a 到 z 26個英文字母(小寫)都可以輸入

    var rg = /^[a - z]$/; // 限定為26個英文小寫字母,任意一個小寫字母都返回 true console.log(rg.test('c')); // 返回 true

    3.3.3 字符組合

    應用示例:

    示例一:
    26個英文字母(不區分大、小寫)都可以輸入

    var rg = /^[a - zA-Z]$/; // 限定為26個英文字母(不區分大、小寫) console.log(rg.test('c')); // 返回 true

    示例二:
    數字和字母(不區分大、小寫)都可以輸入

    var rg = /^[a - zA-Z0-9]$/; // 數字+字母均返回 true console.log(rg.test(5)); // 返回 true

    3.3.4 [ ^ ] 方括號(內部) 取反符^

    如果方括號內部加上 ^ 表示取反,只要包含方括號內的字符,都返回 false 。

    注意和邊界符 ^ 的區別,邊界符是寫到方括號外面。

    示例:

    var reg1 = /^[^a-zA-Z0-9_-]$/; // 中括號內的 ^ 表示取反 console.log(rg.test(5)); // 返回 false console.log(rg.test('!')); // 返回 true

    3.4 量詞符

    量詞符用來設定某個模式出現的次數。

    量詞說明
    *重復 0 次 或 更多次 (相當于 >=0)
    +重復 1 次 或 更多次(相當于 >=1)
    ?重復 0 次 或 1 次(相當于 1 或 0)
    { n }重復 n 次
    { n, }重復 n 次 或 更多次
    { n,m }重復 n 到 m 次

    上表中的量詞符可劃分為符號花括號兩大組。花括號這組要重點掌握

    示例一:

    var reg = /^a$/;

    a 后面添加 * (相當于 >= 0 ):

    var reg = /^a*$/; console.log(reg.test('')); // 返回 true console.log(reg.test('a')); // 返回 true console.log(reg.test('aaa')); // 返回 true

    解釋: * 的意思,就是前一項出現零次或者多次。

    示例二:
    a 后面添加 + (相當于 >= 1 ):

    var reg = /^a+$/; console.log(reg.test('')); // 返回 false console.log(reg.test('a')); // 返回 true console.log(reg.test('aaa')); // 返回 true

    + :匹配前面一個表達式 1 次或者多次。等價于 {1,}

    示例三:

    a 后面添加 ? (相當于 0 || 1):

    var reg = /^a?$/; console.log(reg.test('')); // 返回 true,出現了 0 次 console.log(reg.test('a')); // 返回 true,出現了 1 次 console.log(reg.test('aaa')); // 返回 false,出現了多次

    匹配前面一個表達式 0 次或者 1 次。等價于 {0,1}。

    示例四:

    { 3 } 重復 3 次

    var reg = /^a{3}$/; // 讓花括號前面的 a 只能出現 3 次 console.log(reg.test('')); // 返回 false,出現了 0 次 console.log(reg.test('a')); // 返回 false,出現了 1 次 console.log(reg.test('aaa')); // 返回 true,重復了 3 次 console.log(reg.test('aaaa')); // 返回 false,重復了4 次

    示例五:
    { 3, } 大于等于 3

    var reg = /^a{3,}$/; // 讓花括號前面的 a 只能出現 3 次 console.log(reg.test('')); // 返回 false,出現了 0 次 console.log(reg.test('a')); // 返回 false,出現了 1 次 console.log(reg.test('aaa')); // 返回 true,出現了 3 次 console.log(reg.test('aaaa')); // 返回 true,大于了 3 次

    示例六:
    { 3, 6} 大于等于 3,并且 小于等于6

    var reg = /^a{3,6}$/; // 讓花括號前面的 a 只能出現 3 ~ 6次 console.log(reg.test('')); // 返回 false,出現了 0 次 console.log(reg.test('a')); // 返回 false,出現了 1 次 console.log(reg.test('aaa')); // 返回 true,出現了 3 次 console.log(reg.test('aaaa')); // 返回 true,大于 3 小于 6 console.log(reg.test('aaaaaaa')); // 返回 false,大于了 6 次

    {n,m} :n 和 m 都是整數。匹配前面的字符至少n次,最多m次。如果 n 或者 m 的值是0, 這個值被忽略。

    注意:{3,6} 花括號內,量詞之間 不能有空格,否則沒有效果。



    案例:用戶名驗證

    功能需求:

    • 如果用戶名輸入合法, 則后面提示信息為 : 用戶名合法,并且顏色為綠色;
    • 如果用戶名輸入不合法, 則后面提示信息為: 用戶名不符合規范, 并且顏色為綠色。
    • 用戶名只能為英文字母,數字,下劃線或者短橫線組成, 并且用戶名長度為 6~16位.;

    分析:

  • 首先準備好正則表達式模式 / ^ [a-zA-Z0-9-_]{6,16}$/
  • 當表單失去焦點就開始驗證.;
  • 如果符合正則規范, 則讓后面的span標簽添加 right 類;
  • 如果不符合正則規范, 則讓后面的span標簽添加 wrong 類。
  • HTML結構

    <input type="text" class="uname"><span>請輸入用戶名</span>

    CSS樣式

    <style>span {color: #aaa;font-size: 14px;} .right {color: green;} .wrong {color: red;} </style>

    JavaScript代碼

    <script>// 量詞是設定某個模式出現的次數var reg = /^[a-zA-Z0-9_-]{6,16}$/;var uname = document.querySelector('.uname');var span = document.querySelector('span');// 失去焦點時觸發uname.onblur = function() {if (reg.test(this.value)) {span.className = 'right';span.innerHTML = '用戶名格式正確!'} else {span.className = 'wrong';span.innerHTML = '用戶名格式錯誤!'}} </script>

    【onblur 事件】:請參閱 w3cschool 文檔

    3.5 括號總結及正則驗證工具

  • 中括號 字符集合。多選一,匹配方括號中的任意字符都可以;
  • 大括號 量詞符。里面表示重復次數,如果不加小括號,只對它前面的1個字符起作用;
  • 小括號 表示優先級。

  • 3.5.1 中括號

    // 多選 1 ,表示 a || b || c var reg=/^[abc]$/

    多選 1 ,表示 a || b || c

    3.5.2 大括號

    // 表示只讓 c 重復 3 次 abccc 結果為 true var reg = /^abc{3}$/; console.log(reg.test('aabbccc')); // false console.log(reg.test('abccc')); // true

    解釋: 大括號的量詞限定只對靠近它的左邊第一個字符起作用。

    3.5.3 小括號

    // 表示讓 abc 重復 3 次 var reg = /^(abc){3}$/; console.log(reg.test('aabbccc')); // false console.log(reg.test('abccc')); // false console.log(reg.test('abcabcabc')); // true

    解釋: 小括號,表示優先級,把括號中的當做一個整體參與運算。

    3.5.4 正則表達式在線驗證-菜鳥工具

    由于本地測試,需要通過不同的log來打印比較麻煩,其實可以借助于在線工具來完成

    正則表達式在線測試: https://c.runoob.com/front-end/854

    注意,此工具的表達式輸入框中,表達式兩邊不要輸入斜杠 “ / ”



    3.6 預定義類及座機號碼、表單驗證案例


    3.6.1 預定義類(也稱元字符)

    指某些常見模式的簡寫方式。

    預定義類說明
    \d數字。匹配0-9之間的任意數字,相當于[ 0-9 ]
    \D非數字。匹配0-9以外的字符,相當于[ ^0-9 ]
    \w匹配任意的字母、數字和下劃線,相當于[a-zA-Z0-9_]
    \W除所有字母、數字和下劃線以外的字符,相當于[ ^a-zA-Z0-9_]
    \s驗證是否為空:匹配空格(包括換行符、制表符、空格符等),相當于[\t\r\n\v\f]
    \S匹配非空格的字符,相當于[ ^\t\r\n\v\f]

    3.6.2 座機號碼驗證案例

    全國座機號碼,三種格式:010-12345678、0760-1234567、0755-12345678

    var reg = /^\d{3}-\d{8}|\d{4}-\d{7,8}$/; //或 var reg = /^\d{3,4}-\d{7,8}$/;

    上面兩種正則的效果相同。第一種用了或 “|” 的表示方法。

    注意,在正則里,“或” 用單豎線 “|” 表示。


    3.6.3 表單驗證案例


    分析:

    • 手機號碼正則: /^1[3|4|5|7|8]\d{9}$/
    • QQ: [1-9][0-9]{4,} (騰訊QQ號從10000開始)
    • 昵稱是中文: ^[\u4e00-\u9fa5]{2,8}$

    {4,}:至少出現4次



    4. 正則表達式中的替換及敏感詞過濾案例


    4.1 replace 替換

    replace() 方法可以實現替換字符串操作,用來替換的參數可以是一個字符串或是一個正則表達式。

    語法結構:

    stringObject.replace(regexp/substr,replacement)

    參數說明:
    regexp/substr:被替換的字符串,或者正則表達式;
    replacement:替換為的字符串;
    返回值:是一個替換完畢的新字符串。

    應用示例:

    示例一: 普通替換

    var str='andy和red'; var newStr = str.replace('andy','baby') console.log(newStr) // 打印輸出 baby和red

    示例二:正則式替換(敏感詞過濾)

    HTML結構:

    <textarea name="" id="message"></textarea> <button>提交</button> <div></div>

    CSS樣式:

    <style>textarea {width: 300px;height: 100px;border: 1px solid #ccc;} </style>

    JavaScript 代碼:

    <script>var text = document.querySelector('textarea');var btn = document.querySelector('button');var div = document.querySelector('div');btn.onclick = function() {div.innerHTML = text.value.replace(/激情/,'**');} </script>


    注意:一般情況下,replace只能替換第一個滿足條件的字符串。這時,就要利用到正則表達式的參數

    4.2 正則表達式參數

    語法規范:

    /表達式/[switch]

    參數switch(也稱為修飾符) 用來限定按照什么樣的模式來匹配。它有三種值:

    • g:全局匹配(global 的縮寫);
    • i:忽略大小寫(ignore 的縮寫);
    • gi:全局匹配 + 忽略大小寫。
      因此,對上面敏感詞替換的代碼添加 g ,最終完善如下:
    <script>var text = document.querySelector('textarea');var btn = document.querySelector('button');var div = document.querySelector('div');btn.onclick = function() {div.innerHTML = text.value.replace(/激情/g,'**');} </script>

    這樣,對于文本中多次出現的敏感詞均能替換,彌補了replace本身的不足。




    5. 常用正則表達式

    5.1 數字校驗

  • 數字:

    ^[0-9]*$
  • n位的數字:

    ^\d{n}$
  • 至少n位的數字

    ^\d{n,}$
  • m-n 位的數字

    ^\d{m,n}$
  • 零和非零開頭的數字

    ^(0|[1-9][0-9]*)$
  • 非零開頭的最多帶兩位小數的數字

    ^([1-9][0-9]*)+(.[0-9]{1,2})?$
  • 帶1-2位小數的正數或負數

    ^(\-)?\d+(\.\d{1,2})?$
  • 正數、負數、和小數

    ^(\-|\+)?\d+(\.\d+)?$
  • 有2位小數的正實數

    ^[0-9]+(.[0-9]{2})?$
  • 有1~3位小數的正實數

    ^[0-9]+(.[0-9]{1,3})?$
  • 非零的正整數

    ^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
  • 非零的負整數

    ^\-[1-9][]0-9*$ 或 ^-[1-9]\d*$
  • 非負整數

    ^\d+$ 或 ^[1-9]\d*|0$
  • 非正整數

    ^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
  • 非負浮點數

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

    ^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$

  • 正浮點數

    ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
  • 負浮點數

    ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
  • 浮點數

    ^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

  • 5.2 字符校驗

  • 漢字

    ^[\u4e00-\u9fa5]{0,}$
  • 英文和數字

    ^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
  • 長度為3-20的所有字符

    ^.{3,20}$
  • 由26個英文字母組成的字符串

    ^[A-Za-z]+$
  • 由26個大寫英文字母組成的字符串

    ^[A-Z]+$
  • 由26個小寫英文字母組成的字符串

    ^[a-z]+$
  • 由數字和26個英文字母組成的字符串

    ^[A-Za-z0-9]+$
  • 由數字、26個英文字母或者下劃線組成的字符串

    ^\w+$ 或 ^\w{3,20}$
  • 中文、英文、數字包括下劃線

    ^[\u4E00-\u9FA5A-Za-z0-9_]+$
  • 中文、英文、數字但不包括下劃線等符號

    ^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
  • 可以輸入含有^%&’,;=?$\”等字符:

    [^%&',;=?$\x22]+

  • 禁止輸入含有~的字符[^~\x22]+

  • 5.3 特殊需求處理

  • Email 地址

    ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
  • 域名

    [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
  • InternetURL

    [a-zA-z]+://[^\s]*^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
  • 手機號碼

    ^(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}$
  • 電話號碼(“XXX-XXXXXXX”、”XXXX-XXXXXXXX”、”XXX-XXXXXXX”、”XXX-XXXXXXXX”、”XXXXXXX”和”XXXXXXXX):

    ^($$\d{3,4}-)|\d{3.4}-)?\d{7,8}$
  • 國內電話號碼(0511-4405222、021-87888822):

    \d{3}-\d{8}|\d{4}-\d{7}
  • 身份證號(15位、18位數字):

    ^\d{15}|\d{18}$
  • 短身份證號碼(數字、字母x結尾):

    ^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$

  • 帳號是否合法(字母開頭,允許5-16字節,允許字母數字下劃線):

    ^[a-zA-Z][a-zA-Z0-9_]{4,15}$
  • 密碼(以字母開頭,長度在6~18之間,只能包含字母、數字和下劃線):

  • ```javascript ^[a-zA-Z]\w{5,17}$ ``` <br>
  • 強密碼(必須包含大小寫字母和數字的組合,不能使用特殊字符,長度在8-10之間):
  • ```javascript ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$ ``` <br>
  • 日期格式
  • ```javascript ^\d{4}-\d{1,2}-\d{1,2} ``` <br>
  • 一年的12個月(01~09和1~12):
  • ```javascript ^(0?[1-9]|1[0-2])$ ```
  • 一個月的31天(01~09和1~31):
  • ```javascript ^((0?[1-9])|((1|2)[0-9])|30|31)$ ```
  • 錢的輸入格式
  • 有四種錢的表示形式我們可以接受:”`10000.00`″ 和 “`10,000.00`″, 和沒有 “`分`” 的 “`10000`″ 和 “`10,000`″: ```javascript ^[1-9][0-9]*$ ```這表示任意一個不以`0`開頭的數字。但是,這也意味著一個字符”`0`″不通過,所以我們采用下面的形式: ```javascript ^(0|[1-9][0-9]*)$ ``` <br>一個`0`或者一個不以`0`開頭的數字,我們還可以允許開頭有一個負號: ```javascript ^(0|-?[1-9][0-9]*)$ ``` 這表示一個`0`或者一個可能為負的、開頭不為`0`的數字,讓用戶以`0`開頭好了,把負號的也去掉,因為錢總不能是負的吧。下面我們要加的是說明可能的小數部分: ```javascript ^[0-9]+(.[0-9]+)?$ ``` 必須說明的是,小數點后面至少應該有`1`位數,所以”`10.`”是不通過的,但是 “`10`″ 和 “`10.2`″ 是通過的: ```javascript ^[0-9]+(.[0-9]{2})?$ ``` <br>這樣我們規定小數點后面必須有兩位,如果你認為太苛刻了,可以這樣: ```javascript ^[0-9]+(.[0-9]{1,2})?$ ``` <br>這樣就允許用戶只寫一位小數。下面我們該考慮數字中的逗號了,我們可以這樣: ```javascript ^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$ ``` <br>`1`到`3`個數字,后面跟著任意個逗號(`,`) +`3`個數字,逗號(`,`)成為可選,而不是必須: ```javascript ^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$ ``` 備注:這就是最終結果了,別忘了”`+`”可以用”`*`”替代。如果你覺得空字符串也可以接受的話(奇怪,為什么?)。最后,別忘了在用函數時去掉去掉那個反斜杠(`\`),一般的錯誤都在這里
  • xml文件
  • ```javascript ^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$ ```
  • 中文字符的正則表達式
  • ```javascript [\u4e00-\u9fa5] ```
  • 雙字節字符(包括漢字在內,可以用來計算字符串的長度(一個雙字節字符長度計2,ASCII字符計1)):
  • ```javascript [^\x00-\xff] ```
  • 空白行的正則表達式(可以用來刪除空白行):
  • ```javascript \n\s*\r ```
  • HTML標記的正則表達式(網上流傳的版本太糟糕,下面這個也僅僅能部分,對于復雜的嵌套標記依舊無能為力):
  • ```javascript <(\S*?)[^>]*>.*?|<.*? /> ``` <br>
  • 首、尾空白字符的正則表達式(可以用來刪除行首行尾的空白字符(包括空格、制表符、換頁符等等),非常有用的表達式):
  • ```javascript ^\s*|\s*$或(^\s*)|(\s*$) ``` <br>
  • 騰訊QQ號(從10000開始):
  • ```javascript [1-9][0-9]{4,} ``` <br>
  • 中國郵政編碼(中國郵政編碼為6位數字):
  • ```javascript [1-9]\d{5}(?!\d) ``` <br>
  • IP地址(提取IP地址時有用):
  • ```javascript \d+\.\d+\.\d+\.\d+ ``` <br>
  • IP地址
  • ```javascript ((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)) ``` <br>
  • 文件名檢驗(不能用于文件名的非法字符,包括水平制表符換行符回車符等):
  • ```javascript "[\|\/\<\>"":\*\\\?\t\v\n\r\f]" ``` <br>**VBA 函數示例**: ```vbnet Function FileNameNorm(ByVal mStr As String)Set regex = CreateObject("vbscript.regexp")regex.Global = Trueregex.IgnoreCase = Falseregex.Pattern = "[\|\/\<\>"":\*\\\?\t\v\n\r\f]"FileNameNorm = regex.Replace(mStr, "")Set regex = Nothing End Function ```
  • 正則匹配比較運算符 !=、<=、>=、==、<、>
    區分大小寫,匹配字符串的開頭,示例如下:
  • var pattern = /^(^(!=)?|^(<=)?|^(>=)?|^(==)?|^(<)?|^(>)?)? /,str = '>=300'; console.log(pattern.test(str));



    上一篇:JavaScript從入門到放棄 -(五)函數進階(高級用法)

    下一篇:JavaScript從入門到放棄 -(七)ES6

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的JavaScript从入门到放弃 -(六)正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。