Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 国内视频一区二区三区,免费看国产精品麻豆,久久永久免费视频

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          「JavaScript 從入門到精通」9.正則表達式

          「JavaScript 從入門到精通」9.正則表達式

          期回顧

          「JavaScript 從入門到精通」1.語法和數據類型

          「JavaScript 從入門到精通」2.流程控制和錯誤處理

          「JavaScript 從入門到精通」3.循環和迭代

          「JavaScript 從入門到精通」4.函數

          「JavaScript 從入門到精通」5.表達式和運算符

          「JavaScript 從入門到精通」6.數字

          「JavaScript 從入門到精通」7.時間對象

          前置知識:

          JS中的正則表達式是用來匹配字符串中指定字符組合的模式。

          另外需要記住:正則表達式也是對象。

          1.創建正則表達式

          • 使用一個正則表達式字面量:

          • 使用RegExp對象:
          • new RegExp(str[, attr])接收2個參數,str是一個字符串,指定正則表達式匹配規則,attr可選,表示匹配模式,值有g(全局匹配),i(區分大小寫的匹配)和m(多行匹配)。

          正則表達式的返回值,是一個新的RegExp對象,具有指定的模式和標志。

          返回信息介紹:

          關于正則表達式的一些方法屬性,文章后面介紹,這里先復習定義和使用。

          2.使用正則表達式

          JS的正則表達式可以被用于:

          • RegExp對象的exec和test方法;
          • String對象的match、replace、search和split方法。

          2.1 RegExp對象方法

          • 2.1.1 exec(str)

          str: 需要檢索的字符串。

          若檢索成功,返回匹配的數組,否則返回null。

          返回信息介紹:

          • 2.1.2 test(str)

          str:需要檢索的字符串。

          若匹配成功返回true否則false。

          等價于 reg.exec(str) !=null。

          ^str表示匹配以str開頭的字符串,這些符號文章后面會介紹。

          2.2 String對象方法

          • 2.2.1 search

          str.search(reg):

          str:被檢索的源字符串。

          reg:可以是需要檢索的字符串,也可以是需要檢索的RegExp對象,可以添加標志,如i。

          若檢索成功,返回第一個與RegExp對象匹配的字符串的起始位置,否則返回-1。

          • 2.2.2 match

          str.match(reg):

          str:被檢索的源字符串。

          reg:可以是需要檢索的字符串,也可以是需要檢索的RegExp對象,可以添加標志,如i。

          若檢索成功,返回與reg匹配的所有結果的一個數組,數組的第一項是進行匹配完整的字符串,之后的項是用圓括號捕獲的結果,否則返回null。

          'see Chapter 3.4.5.1' 是整個匹配。

          'Chapter 3.4.5.1' 被'(chapter \d+(\.\d)*)'捕獲。

          '.1' 是被'(\.\d)'捕獲的最后一個值。

          'index' 屬性(22)是整個匹配從零開始的索引。

          'input' 屬性是被解析的原始字符串。

          • 2.2.3 replace

          將字符串中指定字符替換成其他字符,或替換成一個與正則表達式匹配的字符串。

          str.replace(sub/reg,val):

          • str: 源字符串
          • sub: 使用字符串來檢索被替換的文本
          • reg: 使用RegExp對象來檢索來檢索被替換的文本
          • val: 指定替換文本
          • 返回替換成功之后的字符串,不改變源字符串內容。

          val可以使用特殊變量名:

          • 2.2.4 split

          將一個字符串,按照指定符號分割成一個字符串數組。

          str.split(sub[, maxlength]):

          • str: 源字符串
          • sub: 指定的分割符號或正則
          • maxlength: 源字符串

          2.3 使用情況

          • 當我們想要查找一個字符串中的一個匹配是否找到,可以用test或search方法。
          • 當我們想要得到匹配的更多信息,我們就需要用到exec或match方法。

          3.正則表達式符號介紹

          詳細的每個符號的用法,可以查閱 W3school JavaScript RegExp 對象

          3.1 修飾符

          修飾符描述i執行對大小寫不敏感的匹配。g執行全局匹配(查找所有匹配而非在找到第一個匹配后停止)。m執行多行匹配。

          3.2 方括號

          用于查找指定返回之內的字符:

          .3 元字符

          元字符是擁有特殊含義的字符:

          3.4 量詞

          4. 正則表達式拓展(ES6)

          4.1 介紹

          在ES5中有兩種情況。

          • 參數是字符串,則第二個參數為正則表達式的修飾符。

          • 參數是正則表達式,返回一個原表達式的拷貝,且不能有第二個參數,否則報錯。

          ES6中使用:

          第一個參數是正則對象,第二個是指定修飾符,如果第一個參數已經有修飾符,則會被第二個參數覆蓋。

          new RegExp(/abc/ig, 'i');
          

          4.2 字符串的正則方法

          常用的四種方法:match()、replace()、search()和split()。

          4.3 u修飾符

          添加u修飾符,是為了處理大于uFFFF的Unicode字符,即正確處理四個字節的UTF-16編碼。

          /^\uD83D/u.test('\uD83D\uDC2A'); // false
          /^\uD83D/.test('\uD83D\uDC2A'); // true
          

          由于ES5之前不支持四個字節UTF-16編碼,會識別為兩個字符,導致第二行輸出true,加入u修飾符后ES6就會識別為一個字符,所以輸出false。

          注意:

          加上u修飾符后,會改變下面正則表達式的行為:

          • (1)點字符 點字符(.)在正則中表示除了換行符以外的任意單個字符。對于碼點大于0xFFFF的Unicode字符,點字符不能識別,必須加上u修飾符。
          var a="";
          /^.$/.test(a); // false
          /^.$/u.test(a); // true
          
          • (2)Unicode字符表示法 使用ES6新增的大括號表示Unicode字符時,必須在表達式添加u修飾符,才能識別大括號。
          /\u{61}/.test('a'); // false
          /\u{61}/u.test('a'); // true
          /\u{20BB7}/u.test(''); // true
          
          • (3)量詞 使用u修飾符后,所有量詞都會正確識別碼點大于0xFFFF的 Unicode 字符。
          /a{2}/.test('aa'); // true
          /a{2}/u.test('aa'); // true
          /{2}/.test(''); // false
          /{2}/u.test(''); // true
          
          • (4)i修飾符 不加u修飾符,就無法識別非規范的K字符。
          /[a-z]/i.test('\u212A') // false
          /[a-z]/iu.test('\u212A') // true
          

          檢查是否設置u修飾符: 使用unicode屬性。

          const a=/hello/;
          const b=/hello/u;
          a.unicode // false
          b.unicode // true
          

          4.4 y修飾符

          y修飾符與g修飾符類似,也是全局匹配,后一次匹配都是從上一次匹配成功的下一個位置開始。區別在于,g修飾符只要剩余位置中存在匹配即可,而y修飾符是必須從剩余第一個開始。

          lastIndex屬性: 指定匹配的開始位置:

          返回多個匹配:

          一個y修飾符對match方法只能返回第一個匹配,與g修飾符搭配能返回所有匹配。

          'a1a2a3'.match(/a\d/y); // ["a1"]
          'a1a2a3'.match(/a\d/gy); // ["a1", "a2", "a3"]
          

          檢查是否使用y修飾符:

          使用sticky屬性檢查。

          const a=/hello\d/y;
          a.sticky; // true
          

          4.5 flags屬性

          flags屬性返回所有正則表達式的修飾符。

          /abc/ig.flags; // 'gi'
          

          5. 正則表達式拓展(ES9)

          在正則表達式中,點(.)可以表示任意單個字符,除了兩個:用u修飾符解決四個字節的UTF-16字符,另一個是行終止符。

          終止符即表示一行的結束,如下四個字符屬于“行終止符”:

          • U+000A 換行符(\n)
          • U+000D 回車符(\r)
          • U+2028 行分隔符(line separator)
          • U+2029 段分隔符(paragraph separator)
          /foo.bar/.test('foo\nbar')
          // false
          

          上面代碼中,因為.不匹配\n,所以正則表達式返回false。

          換個醒,可以匹配任意單個字符:

          /foo[^]bar/.test('foo\nbar')
          // true
          

          ES9引入s修飾符,使得.可以匹配任意單個字符:

          /foo.bar/s.test('foo\nbar') // true
          

          這被稱為dotAll模式,即點(dot)代表一切字符。所以,正則表達式還引入了一個dotAll屬性,返回一個布爾值,表示該正則表達式是否處在dotAll模式。

          const re=/foo.bar/s;
          // 另一種寫法
          // const re=new RegExp('foo.bar', 's');
          re.test('foo\nbar') // true
          re.dotAll // true
          re.flags // 's'
          

          /s修飾符和多行修飾符/m不沖突,兩者一起使用的情況下,.匹配所有字符,而^和$匹配每一行的行首和行尾。

          公眾號:前端自習課

          則表達式在js中有很多用途,最常見的是在表單驗證中,驗證一些字符串是否符合要求,如email、手機號等等,學好正則對于前端工程師來說是一個不錯的輔助技能。

          圖片來自網絡

          一、特殊字符

          1、$

          正則的結尾符號

          2、^

          開始符號

          3、()

          標記一個子表達式的開始和結束位置

          4、[]

          匹配括號中任意一個; 例:

          結果就是true

          5、{}

          括號里是匹配幾個,一般用來限制位數;例:

          匹配位數是4~7位,7個a返回true,8個就false;

          有三種用法:

          {3}:表示匹配三位;

          {3,}:表示匹配三位及以上;

          {3,7}:表示匹配3到7位

          6、*

          表示匹配0次或多次;相當于{0,}

          7、?

          表示要匹配的是0或1位;

          8、+

          表示匹配前面的字符串一次或多次

          9、.

          匹配任意字符

          10、|

          “或”:不解釋

          11、\w

          字母、數字、下劃線

          12、\W

          非字母、數字、下劃線

          13、\d

          數字,等價于[0-9]

          14、\D

          非數字,等價于[^0-9]

          15、\s

          匹配空格

          二、js方法

          1、match方法:

          挑選相匹配的內容:例:

          結果是“1,2,3”

          2.test方法:

          返回一個布爾值,表示是否匹配

          上述結果是“true”

          3、replace方法:

          用于將匹配正則的字符串進行替換,例:

          前面//里面是被替換的內容,后面加的字符串是要替換的內容。

          例:var path=req.url.replace(/\/?(?:\?.*)?$/,'').toLowerCase();

          獲取“/”后邊的路徑。

          avaScript正則表達式的深度解析與應用

          **一、正則表達式的魅力**

          正則表達式,簡稱Regex,是一種強大的字符串處理工具,它能幫助我們快速、準確地匹配、查找、替換復雜的字符串模式。在JavaScript中,正則表達式被賦予了更高的地位,它不僅僅是一個工具,更是一種編程思維。

          正則表達式的主要應用場景包括但不限于:表單驗證、文本內容過濾、敏感詞替換、字符串的特定部分提取等。

          **二、正則表達式的創建與使用**

          在JavaScript中,創建正則表達式有兩種方式:

          1. **通過RegExp構造函數**:`var regex=new RegExp('pattern');`

          2. **通過字面量方式**:`var regex=/pattern/;`

          一旦創建了正則表達式,就可以使用其提供的`test()`方法來檢測字符串是否符合該正則表達式的規則。

          **三、正則表達式的核心元素**

          正則表達式的強大之處在于其包含的各種特殊字符和元字符,它們賦予了正則表達式豐富的匹配能力。

          1. **邊界符**:`^` 和 `$` 分別表示字符串的開始和結束。

          2. **字符類**:`[]` 用于定義一組可選的字符,如`[abc]`表示匹配`a`、`b`或`c`中的任何一個字符。

          3. **量詞符**:如`*`、`+`、`?`、`{n}`、`{n,}`和`{n,m}`,它們用于指定字符或字符組出現的次數。

          4. **預定義類**:如`\d`、`\D`、`\w`、`\W`、`\s`和`\S`,它們提供了對常見字符模式的快速匹配。

          **四、正則表達式的替換功能**

          正則表達式的另一個強大功能是替換。使用`replace()`方法,可以基于正則表達式匹配到的內容,將字符串中的特定部分替換為其他內容。

          `replace()`方法接受兩個參數:第一個參數是要被替換的模式(可以是字符串或正則表達式),第二個參數是替換后的內容。

          **五、正則表達式的修飾符**

          正則表達式還支持一些修飾符,它們可以改變匹配的行為:

          * `g`:全局匹配,即匹配整個字符串中的所有符合條件的內容,而不僅僅是第一個。

          * `i`:忽略大小寫,即在匹配時忽略字符的大小寫。

          結合使用這兩個修飾符,如`gi`,可以實現全局且不區分大小寫的匹配。

          **六、總結**

          正則表達式是JavaScript中一個非常強大的工具,它可以幫助我們高效地處理字符串,實現復雜的匹配、查找和替換操作。掌握正則表達式的核心概念和用法,對于提升JavaScript編程能力具有非常重要的意義。


          上一篇:Phaser橫屏適配
          下一篇:CSS命名規則
          主站蜘蛛池模板: 台湾无码AV一区二区三区| 国产一区二区三区日韩精品| aⅴ一区二区三区无卡无码| 精品无码人妻一区二区三区| 国产99精品一区二区三区免费| 在线免费视频一区| 亚洲午夜精品一区二区麻豆| 日本一区二区不卡视频| 亚洲啪啪综合AV一区| 国产一区二区三区不卡在线观看 | 性色av闺蜜一区二区三区| 国产午夜精品一区二区三区小说| 爱爱帝国亚洲一区二区三区 | 亚洲一区精品中文字幕| 国产AⅤ精品一区二区三区久久| 夜夜精品视频一区二区| 亚洲AV无码片一区二区三区| 无码国产精品一区二区免费式直播| 国产av一区二区三区日韩| 东京热人妻无码一区二区av| 国模吧一区二区三区| 国偷自产av一区二区三区| 国产内射999视频一区| 中文字幕乱码一区二区免费 | 欧洲精品一区二区三区| 国产精品视频一区国模私拍| 国产天堂在线一区二区三区 | 无码丰满熟妇浪潮一区二区AV| 亚洲色精品VR一区区三区| 日本在线视频一区二区| 国产精品视频免费一区二区| 国产福利一区二区| www一区二区www免费| 国产日韩AV免费无码一区二区 | 无码日韩人妻AV一区二区三区| 亚洲AV无码一区二区三区国产| 国产伦精品一区二区三区视频猫咪| 国产av天堂一区二区三区 | 国产一区二区视频在线观看| 久久精品一区二区三区不卡| 日韩精品无码一区二区三区免费|