精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Javascript正則深入以及十個非常有意思的正則實戰

開發 前端
對于前端工程師來說, 正則表達式也許是javascript語言中最晦澀難懂的, 但是也往往是最簡潔的.工作中遇到的很多問題,諸如搜索,查找, 高亮關鍵字等都可以使用正則輕松解決。

前言

熟悉我的朋友可能會知道,我一向是不寫熱點的。為什么不寫呢?是因為我不關注熱點嗎?其實也不是。有些事件我還是很關注的,也確實有不少想法和觀點。但我一直奉行一個原則,就是:要做有生命力的內容。

對于前端工程師來說, 正則表達式也許是javascript語言中最晦澀難懂的, 但是也往往是最簡潔的.工作中遇到的很多問題,諸如搜索,查找, 高亮關鍵字等都可以使用正則輕松解決,所以有句話說的好:

正則用的好, 加班遠離我.

今天筆者就復盤一下javascript正則表達式的一些使用技巧和高級API, 并通過幾個實際的案例,來展現正則表達式的魅力.如果大家覺得正則表達式理解起來很麻煩,也可以使用如下在線網站, 只需要輸入你的正則表達式, 它就能以圖形的方式將你的正則展示出來:

圖片

你將收獲

  • 模式匹配的用法(x)
  • 非捕獲括號的模式匹配(?:x)
  • 先行斷言x(?=y)
  • 后行斷言(?<=y)x
  • 正向否定查找x(?!y)
  • 反向否定查找(?<!y)x
  • 字符集合和反向字符集合的用法[xyz]/[^xyz]
  • 詞邊界和非單詞邊界匹配/b/B
  • 空白字符/非空白字符匹配/s/S
  • 單字字符/非單字字符匹配/w/W
  • 正則10大應用案例

正文

對于正則的基本用法筆者這里就不總結了,這里重點介紹一些比較有用且難懂的知識點.在最后筆者會寫10個經典的正則案例, 供大家學習參考, 或者在工作中直接使用.

圖片

以上幾點應用筆者在下文中會寫幾個例子來講解.

模式匹配的用法(x)

模式匹配主要用來匹配某一類字符串并記住匹配項.

案例:

let str = 'xuxi is xuxi is'
let reg = /(xuxi) (is) \1 \2/g
reg.test(str)  // true    (1)
str.replace(reg, '$1 $2')  // xuxi is  (2)
復制代碼

解釋: 其中括號被稱為捕獲括號, 模式中的 \1 和 \2 表示第一個和第二個被捕獲括號匹配的子字符串,即 xuxi 和 is,匹配了原字符串中的后兩個單詞, 因此(1)中運行的結果為true. 當我們在字符串中使用replace時, 我們可以使用$1, $2這樣的方式獲取第n個匹配項,并用來替換字符串. 如(2)中的運行結果.

非捕獲括號的模式匹配(?:x)

主要用來匹配某一類字符串但不記住匹配項.

案例:

let str = 'xuxixuxi'
let reg = /(?:xuxi){1,2}/g
reg.test(str)  // true    (1)
復制代碼


圖片

解釋: 其中(?:)被稱為非捕獲括號, 我們可以使用它匹配一組字符但是并不記住該字符,一般用來判斷某類字符是否存在于某字符串中.

先行斷言x(?=y)

先行斷言: 匹配'x'僅僅當'x'后面跟著'y'.

案例:

let str = '王者融化'
let reg = /王(?=者)/
reg.test(str)  // true    (1)
復制代碼


圖片

解釋: /王(?=者)/會匹配到"王"僅當它后面跟著"者".但是"者"不屬于匹配結果的一部分.

后行斷言(?<=y)x

后行斷言: 匹配'x'僅當'x'前面是'y'.

案例:

let str = 'xuxiA'
let reg = /(?<=xuxi)A/
reg.test(str)  // true    (1)
復制代碼

解釋: /(?<=xuxi)A/會匹配到A僅當它前面為xuxi.但是xuxi不屬于匹配結果的一部分.

正向否定查找x(?!y)

正向否定查找: 僅僅當'x'后面不跟著'y'時匹配'x'.

案例:

let str = '3.1415'
let reg = /\d+(?!\.)/
reg.exec(str)  // [1415]   (1)
復制代碼

圖片

解釋: 其中/\d+(?!.)/匹配一個或多個數字,當且僅當它后面沒有小數點時, 所以(1)中執行后會匹配到1415而不是3.1415

反向否定查找(?<!y)x

反向否定查找: 僅僅當'x'前面不是'y'時匹配'x'.

案例:

let str = '3.1415'
let reg = /(?<!\.)\d+/
reg.exec(str)  // [3]    (1)
復制代碼

解釋: /(?<!.)\d+/匹配一個數字,當且僅當前面字符不是.時,此時將匹配3.

字符集合和反向字符集合的用法 [xyz] / [^xyz]

[xyz]: 一個字符集合。匹配方括號中的任意字符,包括轉義序列。你可以使用破折號(-)來指定一個字符范圍。

[^xyz]: 一個反向字符集。也就是說,它匹配任何沒有包含在方括號中的字符。你可以使用破折號(-)來指定一個字符范圍。任何普通字符在這里都是起作用的

案例:

let str = 'abcd'
let reg1 = /[a-c]+/
let reg2 = /[^d]$/
reg1.test(str)  // true    (1)
reg2.test(str)  // false    (2)
復制代碼

圖片

圖片

解釋: (1)中將返回true因為字符串中包含a-c中的字符, (2)中獎返回false, 因為字符串結尾為d, 但正則reg2需要匹配結尾不為d的字符串.

詞邊界和非單詞邊界匹配\b\B

\b 匹配一個詞的邊界。一個詞的邊界就是一個詞不被另外一個“字”字符跟隨的位置或者前面跟其他“字”字符的位置,例如在字母和空格之間。注意,匹配中不包括匹配的字邊界。換句話說,一個匹配的詞的邊界的內容的長度是0。

\B 匹配一個非單詞邊界。匹配如下幾種情況:(1)字符串第一個字符為非“字”字符 (2)字符串最后一個字符為非“字”字符 (3)兩個單詞字符之間 (4)兩個非單詞字符之間 (5)空字符串

案例:

let str = 'xuxi'
let reg1 = /xi\b/
let reg2 = /xu\B/
reg1.exec(str)  // [xi]    (1)
reg2.exec(str)  // [xu]    (2)
復制代碼


圖片

圖片

解釋: (1)中匹配到了單詞邊界,即xi, 為該字符串的末尾.(2)中應為xu為非單詞邊界,所以會被其匹配到.

空白字符/非空白字符匹配\s\S

\s: 匹配一個空白字符,包括空格、制表符、換頁符和換行符.

\S: 匹配一個非空白字符

案例:

let str = 'xuxi is'
let reg1 = /.*\s/g
let reg2 = /\S\w*/g
reg1.exec(str)  // [xuxi]    (1)
reg2.exec(str)  // [xuxi]    (2)
復制代碼

圖片

圖片

解釋: (1)和(2)中執行之后都將匹配xuxi, 一個是空白字符之前的匹配, 一個是非空白字符的匹配.

單字字符/非單字字符匹配\w/W

\w: 匹配一個單字字符(字母、數字或者下劃線)。等價于 [A-Za-z0-9_]。

\W: 匹配一個非單字字符。等價于 [^A-Za-z0-9_]

圖片

圖片

由于以上2種模式比較簡單,這里就不一一介紹了.

正則10大應用案例

接下來筆者將總結幾個使用正則的實際應用,供大家學習和參考.

1. 去除字符串內指定元素的標簽

function trimTag(tagName, htmlStr) {
  let reg = new RegExp(`<${tagName}(\\s.*)*>(\\n|.)*<\\/${tagName}>`, "g")
  return htmlStr.replace(reg, '')
}
復制代碼

2. 短橫線命名轉駝峰命名

// 短橫線轉駝峰命名, flag = 0為小駝峰, 1為大駝峰
function toCamelCase(str, flag = 0) {
  if(flag) {
    return str[0].toUpperCase() + str.slice(1).replace(/-(\w)/g, ($0, $1) => $1.toUpperCase())
  }else {
    return str.replace(/-(\w)/g, ($0, $1) => $1.toUpperCase())
  }
}
復制代碼

3. 實現一個簡單的模板引擎

關于實現一個模板引擎, 實現中用到了大量的正則,建議感興趣的可以直接看實現一個簡單的模板引擎.

4. 去除字符串中的空格符

function trimAll(str) {
  return str.replace(/\s*/g,"")
}
復制代碼

5. 判斷指定格式的數據輸入合法性

function numCheck(str, specialNum) {
  if(str.indexOf(',') > -1) {
      return str.splite(',').every(item=>this.numCheck(item));
  } else {
      return str.split(specialNum).length === 2;
  }
}
復制代碼

6. 去除url參數字符串中值為空的字段

// 去除url參數字符串中值為空的字段
const trimParmas = (parmaStr:string = '') => {
  return parmaStr.replace(/((\w*?)=&|(&\w*?=)$)/g, '')
}
復制代碼

7. 將瀏覽器參數字符串轉化為參數對象

function unParams(params = '?a=1&b=2&c=3') {
  let obj = {}
  params && params.replace(/((\w*)=([\.a-z0-9A-Z]*)?)?/g, (m,a,b,c) => {
    if(b || c) obj[b] = c
  })
  return obj
}
復制代碼

8. 計算字符串字節數

/**
 * 計算字符串字節數
 * @param str
 * @desc 一個中文占2個字節, 一個英文占一個字節
 */
function computeStringByte(str) {
  let size = 0,
  strArr = str.split(''),
  reg = /[\u4e00-\u9fa5]/   // 判斷是否為中文
  for(let i = strArr.length; i--; i>=0) {
    if(reg.test(strArr[i])) {
      size+= 2
    }else {
      size += 1
    }
  }
  return size
}
復制代碼

9. 匹配是否包含中文字符

function hasCn(str) {
  let reg = /[\u4e00-\u9fa5]/g
  return reg.test(str)
}
復制代碼

10. 實現搜索聯想功能

function searchLink(keyword) {
  // 模擬后端返回數據
  let list = ['abc', 'ab', 'a', 'bcd', 'edf', 'abd'];
  let reg = new RegExp(keyword, 'i');
  return list.filter(item => reg.test(item))
}


責任編輯:武曉燕 來源: 趣談前端
相關推薦

2021-11-04 22:27:22

javascript正則API

2024-03-04 00:00:00

javascript正則字符串

2022-08-03 08:03:03

前端APIjavascript

2015-07-15 13:54:13

2021-07-26 10:33:54

Web開發項目

2015-10-28 13:57:29

融合架構華三UIS

2018-06-24 16:39:28

Tomcat異常線程

2020-12-12 13:50:16

云開發

2021-01-27 13:54:05

開發云原生工具

2022-06-29 09:43:14

SQL優化數據庫

2021-03-25 06:12:55

SVG 濾鏡CSS

2012-05-22 10:12:59

jQuery

2022-06-15 07:21:47

鼠標指針交互效果CSS

2022-08-15 22:34:47

Overflow方向裁切

2021-02-20 16:01:26

Github前端開發

2023-05-15 09:16:18

CSSCSS Mask

2022-07-11 13:09:26

mmapLinux

2021-09-26 07:57:15

Web項目GitHub

2017-12-12 14:50:33

數據庫MySQL命令

2017-08-01 00:52:07

kafka大數據消息總線
點贊
收藏

51CTO技術棧公眾號

国产视频不卡| 久久视频这里只有精品| 国产淫片av片久久久久久| 韩国中文字幕2020精品| 久久精品国产亚洲高清剧情介绍| 亚洲无线码在线一区观看| 潘金莲激情呻吟欲求不满视频| 午夜伦理在线视频| 91婷婷韩国欧美一区二区| 国产精品久久久久久久久久东京| 天天看片中文字幕| 亚洲国产最新| 欧美一二三区在线| av免费播放网址| 国产一二区在线| 久久综合九色综合97婷婷| 国产综合久久久久久| 日本熟女一区二区| 日韩在线观看一区| 亚洲精品福利在线观看| 青青草久久伊人| 小草在线视频免费播放| 亚洲欧美二区三区| 日韩精品伦理第一区| 艳妇乳肉豪妇荡乳av| 伊人激情综合| 久久精品国亚洲| 干b视频在线观看| 国产主播性色av福利精品一区| 欧美亚洲动漫另类| 男人靠女人免费视频网站| 久热国产在线| 中日韩免费视频中文字幕| 国产伦精品一区二区三区高清| 中文字幕日韩第一页| 亚洲综合社区| 久久久久久成人| 久久国产波多野结衣| 欧美日韩久久精品| 亚洲欧美激情另类校园| 日本三级日本三级日本三级极| 久久精品嫩草影院| 91九色02白丝porn| 欧美日韩黄色一级片| 青春草视频在线观看| 国产精品久久久久久户外露出 | 久久久久久久免费视频了| 痴汉一区二区三区| 精品毛片在线观看| 国产一区在线观看视频| 国产乱人伦真实精品视频| 免费观看日批视频| 久久精品毛片| 国产成人精品免费视频| 欧美精品二区三区| 国产日韩精品视频一区二区三区| 久久久噜久噜久久综合| 久久久久黄色片| 午夜激情一区| 久久99精品久久久久久青青91 | 熟妇高潮一区二区| 一区二区三区国产好| 日韩精品一区国产麻豆| 韩国三级hd中文字幕有哪些| 日韩在线观看中文字幕| 日韩欧美色电影| 极品白嫩少妇无套内谢| aaa国产精品视频| 亚洲国产精品久久久久秋霞不卡 | 电影一区二区在线观看| 精品国产1区二区| 中文字幕三级电影| 亚洲成aⅴ人片久久青草影院| 亚洲久久久久久久久久久| 人妻少妇一区二区| 国产一区二区三区天码| 日韩一区av在线| 91人妻一区二区三区蜜臀| 欧美1级日本1级| 午夜精品久久久久久久男人的天堂 | 国产精品免费观看视频| 99热这里只有精品7| 日韩三级电影视频| 精品久久久久久久久中文字幕| 5月婷婷6月丁香| 高清av一区二区三区| 3d动漫精品啪啪1区2区免费| 杨幂一区二区国产精品| 青青久久av| 中文字幕一区日韩电影| 欧美色图亚洲视频| 国产视频一区在线观看一区免费| 国产mv免费观看入口亚洲| 亚洲天堂手机在线| 国产不卡视频在线播放| 欧美13一14另类| 日本中文字幕伦在线观看| 一区二区三区不卡视频| 免费高清在线观看免费| 草莓视频成人appios| 欧美一级二级在线观看| 好吊日免费视频| 亚洲成av人片乱码色午夜| 午夜免费久久久久| 中文无码av一区二区三区| 国产白丝网站精品污在线入口| 免费亚洲一区二区| av片在线观看网站| 日本韩国一区二区三区| 蜜桃视频无码区在线观看| 国产91精品对白在线播放| 欧美成人免费小视频| 91在线视频免费播放| 国产成a人无v码亚洲福利| 午夜免费电影一区在线观看| 98色花堂精品视频在线观看| 6080日韩午夜伦伦午夜伦| 成年人网站免费看| 欧美人成网站| 成人福利网站在线观看| 欧美挠脚心网站| 亚洲影视在线播放| 一级黄色录像在线观看| 亚洲精品aaaaa| 久久久久久久久久久久av| 亚洲天堂手机在线| 日本一区二区三区在线观看| 成人一区二区免费视频| 精品国产亚洲一区二区三区| 在线看日韩欧美| 国产精品久久久久久人| 不卡大黄网站免费看| 400部精品国偷自产在线观看| 写真福利精品福利在线观看| 亚洲精品国产精品久久清纯直播 | 91视频国产一区| 国产精品99999| 福利一区福利二区微拍刺激| 涩视频在线观看| 欧美一区视频| 成人黄色大片在线免费观看| 黄网站在线观看| 欧美性高潮在线| 亚洲天堂网一区二区| 亚洲精品色图| 久久99欧美| 国产无遮挡裸体视频在线观看| 日韩欧美一区中文| 欧美精品久久久久久久久46p| 免费成人小视频| 亚洲va韩国va欧美va精四季| 91福利精品在线观看| 中文字幕日韩电影| 亚洲精品毛片一区二区三区| 国产日产亚洲精品系列| 国产福利影院在线观看| 成人羞羞动漫| 国产欧美中文字幕| 欧美激情免费| 欧美一区二区在线不卡| 亚洲色婷婷一区二区三区| 国产麻豆视频一区二区| 一二三在线视频| 一区二区三区欧洲区| 欧美激情国产日韩精品一区18| 性一交一乱一伧老太| 亚洲午夜久久久久久久久电影院 | 日韩高清一级| 青青草原一区二区| 精品乱码一区二区三四区视频| 91黄视频在线观看| 国产一区第一页| 国产精品亚洲专一区二区三区| 国产成人永久免费视频| 国产精品香蕉| 日本精品一区二区三区在线播放视频 | 日韩精品中文字幕视频在线| 国产99免费视频| 国产精品第一页第二页第三页| 欧美性猛交xx| 国产日韩1区| 亚洲人成网站在线观看播放| 秋霞午夜一区二区三区视频| 97国产在线观看| 国产大学生校花援交在线播放| 911精品国产一区二区在线| 久久综合成人网| 久久婷婷国产综合国色天香 | 成人免费看视频| 亚洲色欲综合一区二区三区| 99久久99久久精品国产片桃花| 97免费资源站| 亚洲a∨精品一区二区三区导航| 久久久999成人| 婷婷视频在线观看| 精品视频一区 二区 三区| 强乱中文字幕av一区乱码| 91免费视频大全| 在线观看中文av| 亚洲一区二区成人| 一区二区在线观看网站| 粉嫩久久久久久久极品| 国产精品自拍视频| 国产传媒av在线| 日韩视频―中文字幕| 日本精品一区二区在线观看| 欧美丝袜自拍制服另类| 国产亚洲精品成人| 中文字幕精品一区二区三区精品| 亚洲成a人无码| 午夜69成人做爰视频| 久久五月天小说| 精品视频一区二区| 亚洲精品成人一区| 日韩av成人在线观看| 青春草视频在线观看| 在线观看精品国产视频| 午夜av免费在线观看| 日韩三级视频中文字幕| 性色av一区二区三区四区| 精品欧美激情精品一区| 欧美国产在线看| 国产精品国产三级国产三级人妇| 人人妻人人澡人人爽人人精品| 丰满放荡岳乱妇91ww| 最新免费av网址| 蜜臀av一区二区三区| 无码aⅴ精品一区二区三区浪潮| 在线 亚洲欧美在线综合一区| 秋霞在线一区二区| 日韩精品诱惑一区?区三区| 久久亚洲高清| 麻豆精品少妇| 国产亚洲情侣一区二区无| 91精品亚洲一区在线观看| 国产精品麻豆va在线播放| 小视频免费在线观看| 97人人做人人爱| 91九色国产在线播放| 色综合五月天导航| 中文在线观看免费| 久久精品国产欧美亚洲人人爽| 爱久久·www| 亚洲最新av在线网站| 国产中文在线观看| 亚洲人a成www在线影院| 男人的天堂在线| 亚洲女人天堂成人av在线| 五月婷婷在线播放| 日韩激情av在线播放| 日本黄色大片视频| 日韩av在线网页| 日本视频在线观看一区二区三区| 日韩精品在线观看一区| 欧美成人综合在线| 一区二区在线免费视频| 高清国产福利在线观看| 中文字幕精品一区久久久久| 97电影在线观看| 日韩亚洲成人av在线| 成人在线播放免费观看| 久久99国产精品自在自在app| 欧美色图天堂| 91精品国产色综合久久不卡98口 | 不卡一区2区| 一级日韩一区在线观看| 外国成人免费视频| 国产专区在线视频| 伊人精品成人久久综合软件| 国产免费黄色av| 视频一区视频二区中文| 一区二区三区 日韩| 国内成人精品2018免费看| 韩国三级hd中文字幕有哪些| av亚洲精华国产精华| 国产av自拍一区| 亚洲欧洲成人精品av97| 国产精品50页| 91国内精品野花午夜精品 | 欧美成人一区二区三区片免费| 亚洲美女福利视频| 精品网站999www| 视频一区二区三区不卡| 欧美黑人狂野猛交老妇| 在线成人av观看| 成人做爽爽免费视频| 国产精品宾馆| 亚洲高清资源综合久久精品| 国产一区日韩一区| 久久精品99国产| 国内精品自线一区二区三区视频| 艳妇乳肉亭妇荡乳av| 国产精品久久毛片| 日韩无码精品一区二区三区| 欧美日韩在线三级| 风流老熟女一区二区三区| 亚洲欧美日韩久久久久久| 中文人妻一区二区三区| 性欧美videos高清hd4k| 欧美国产日本高清在线 | 人妻av一区二区| 国产欧美一区二区精品仙草咪| 免费人成在线观看| 色猫猫国产区一区二在线视频| av网站在线观看免费| 亚洲区免费影片| 欧美大片黄色| 国产精品久久久久久一区二区| 国产成人精品福利| 亚洲最新在线| 久久成人国产| 国产艳妇疯狂做爰视频| 国产精品理论片| 草久久免费视频| 欧美大黄免费观看| 午夜在线免费观看视频| 欧洲一区二区视频| 99精品中文字幕在线不卡| 亚洲精品不卡| 国产精品日韩| 在线观看成人动漫| 亚洲欧美成人一区二区三区| 中文字幕人妻互换av久久| 亚洲美女av在线播放| sis001亚洲原创区| 91在线观看免费高清| 欧美精品一二| 成人观看免费完整观看| av在线不卡电影| 伊人365影院| 欧美一级xxx| caoporm免费视频在线| 国产精品专区一| 欧美亚洲激情| 熟女少妇精品一区二区| 91麻豆免费看片| 天堂网av手机版| 亚洲国产精品久久精品怡红院 | 亚洲日本成人在线观看| 中国女人一级一次看片| 亚洲精品一区二区网址| 久草免费在线视频| 久久99国产精品99久久| 1024日韩| 丰满岳乱妇一区二区| 午夜视频久久久久久| 韩国av免费在线| 久久久中文字幕| 六月丁香久久丫| 又粗又黑又大的吊av| 91丨porny丨首页| 久久久久久久久久久久久久av| 精品调教chinesegay| 在线日韩影院| 清纯唯美一区二区三区| 日韩国产欧美三级| 日韩女同一区二区三区| 欧美性大战久久久| 在线视频91p| 亚洲xxxx做受欧美| 欧美日韩三级| 国产精品一区二区人妻喷水| 激情成人中文字幕| 狠狠狠综合7777久夜色撩人| 国产极品jizzhd欧美| 999成人网| 免费黄色在线播放| 精品久久久视频| 理论在线观看| 国产日韩精品综合网站| 欧美黄在线观看| 久久久午夜精品福利内容| 色婷婷精品大在线视频| 自拍视频在线免费观看| 亚洲精品欧美日韩| 极品少妇一区二区三区| 性色av蜜臀av色欲av| 欧美在线你懂的| 八戒八戒神马在线电影| 国产伦精品一区二区三区视频免费| 亚洲一区免费| 精品一区二区6| 欧美成人免费网站| 日韩精品影片| 大桥未久一区二区三区| 波多野结衣中文一区| 亚洲大尺度在线观看| 久久久www成人免费精品| 久久人人爽人人爽人人片av不| 青青在线免费观看视频| 国产精品久久久久毛片软件| 成人精品在线播放| 国产精品成人品| 国产真实久久| 成年人在线免费看片| 精品国内二区三区| 日韩三级影视| 成人一级生活片| 日本一区二区三区在线观看| 人妻无码中文字幕免费视频蜜桃|