js正規表示式的匹配函式返回陣列問題

2021-09-26 20:18:41 字數 709 閱讀 2225

初衷是想使用js的match函式配合正規表示式來匹配正確的ip格式,出現問題

var reg = /^([1-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(([0-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.)([1-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$/; 

var result = str.match(reg);

當輸入str為『192.168.0.1』時,列印輸出結果result為:

這裡明顯發現返回陣列的第3個數組成員不符合預期,168欄位並沒有匹配上,注意即使正規表示式是正確的,而js的match函式的返回陣列也不一定正確,這裡我們返回陣列是想看ip各個欄位的具體值的效果並不能達到,最後仍是將正規表示式重複展開,展開後測試正常。

match方法的非全域性匹配結果為乙個陣列。這個陣列分為4部分,依次為:

1.整個正規表示式匹配的字串

2.括號匹配的子串,每一對括號對應乙個子串

3.index:匹配的第乙個字元位置

4.input:輸入字串

另:測試過使用match函式前給正則加上g修飾符(全域性匹配),那麼返回陣列的第乙個及以後元素存放的都是匹配的字串,不再存放匹配分組。

js 正規表示式匹配中文

簡單匹配中文方法 u0000 u00ff 匹配非單位元組字元 另錯誤方法 u00 uff 匹配 非單位元組字元 還包括一些全半形符號如,等 還有vwxyz字元 說明 u0000 u00ff.包含unicode單位元組編碼 0 255編碼 包含基本控制字元和拉丁文本母。採用該否定表示式,粗略判斷是否含...

JS 正規表示式匹配獲取

表示轉義字元 表示乙個任意字元 表示字元個數 表示字元個數 表示開始與結束 表示非 d表示 1個數字 w 表示乙個字元 不包含中文 s 表示乙個空白字元 表示優先順序,提取組 表示或 方式一 var regobj new regexp d 方式二 var regobj d 推薦使用第二種方式,這種方...

js 匹配URL的正規表示式

qq 獲取字串中所有 a 標籤的 href 的值及其中間的文字內容 const linkreg ig const linkarray str.replace linkreg,args linkarray.push console.log linkarray 輸出結果 匹配所有的 img 標籤的 sr...