成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

「正則」初探正則匹配的魅力

開發 前端
今天給大家分享,簡單的介紹如何入門正則表達式Regex,趕緊動手學起來吧。

[[396560]]

大家好,我是TianTian。

今天要分享的內容是正則表達式Regex。

某天中午正要拿起手機打把王者榮耀,突然微信來了條消息!

某位網友來電,問我能不能幫忙看個字符串匹配的問題。

我硬著頭皮答應了,可是,我看到題目的時候。

[[396561]]

題目大概需要匹配檢索的是:

  • =A12/B14/D14..../H18
  • =C12 * D12 * H16...*F19

嗯,我翻開了我多年沒有碰的正則手冊。

初探Regex

首先,先簡單介紹一下:

  • 正則表達式(也稱為regex或regexp)只是一種模式,可用于匹配字符的不同且通常是特定的組合。

我們可以使用這些模式來檢查和處理字符串,如何檢索呢,我們得知道如何構造,創建正則表達式可能看起來像這樣:

  1. let dog; 
  2. rat = /dog/; 
  3. rat = new RegExp("dog"); 

有了表達式,那么我們如何匹配呢,當然正則表達式有自己的可用方法,也可以在某些字符串方法中使用它們。

例如,.test是可用于正則表達式的方法。它返回是否在字符串中找到正則表達式的布爾值:

  1. let rat = /dog/; 
  2. rat.test('I saw a dog!');  // returns true 
  3. /rat/.test('I saw a dog!');  // returns true 

上面兩種調用.test的方式是等效的:也就是說,可以使用分配給regexp的變量或直接使用regexp來調用它。對于正則表達式的任何使用都是如此。重要的是要注意,正則表達式匹配必須精確,包括任何換行符,大寫字母和空白。例如:

  1. /dog/.test('I saw some dogs!');  // returns true 
  2. /dog/.test('Meet at the bad og 9');  // returns false 
  3. /dog/.test('Rats and doihs are not friends');  // returns false 

看到這里,肯定不理解,為什么要使用它吧,不急,往下看。

特殊字符

特殊字符是用于修改或指定正則表達式的字符組合的字符。最有用的特殊字符之一是方括號。方括號允許您表示目標字符串中的字符可以是任意數量的字符!讓我們看看它們的作用:

  1. const bt = /b[aeiou]t/; 
  2. bt.test('bat');  // returns true 
  3. bt.test('bet');  // returns true 
  4. bt.test('bit');  // returns true 
  5. bt.test('bot');  // returns true 
  6. bt.test('but');  // returns true 
  7. bt.test('bpt');  // returns false 

想想看,括號里的一切都對應于你要搜索的字符串中的一個字符。在這個有用的能力之上,我們可以使用"-"字符來指定一個特定的字符范圍!

  1. const nums = /[0-5]/; 
  2. nums.test('0');  //  returns true 
  3. nums.test('3');  //  returns true 
  4. nums.test('7');  //  returns false 

再者,比如,要指定所有的字母,你會做這樣的事情:

  1. const letters = /[A-Za-z]/; 
  2. letters.test('M');  // returns true 
  3. letters.test('y');  // returns true 
  4. letters.test('5');  // returns false 

另一個需要記住的特殊字符是 "+"字符。這表明一個特定的元素可以重復任何次數。讓我們看看它的作用。

  1. const bomb = /boo+m/;   
  2. bomb.test('boom!');  // returns true 
  3. bomb.test('Boom!');  // returns false 
  4. bomb.test('boooooooooooom!');  // returns true 

如果你想忽略大小寫怎么辦,可以在后面加個i。

  1. const bomb = /boo+m/i;   
  2. bomb.test('boom!');  // returns true 
  3. bomb.test('Boom!');  // returns true 
  4. bomb.test('boooooooooooom!');  // returns true 
  5. bomb.test('BOOOOOOOOOOOOM!');  // returns true 

比如我們常見的"?"字符也是一個有用的特殊字符。這個字符表示前面的字符可以包括也可以不包括。

  1. const color = /colou?r/;  
  2. color.test('color');  // returns true 
  3. color.test('colour');  // returns true 

你可能還需要關注的特殊字符是". "字符。這是個通配符。一個". "可以代表任何其他字符,不包括換行。

  1. const anything = /./;  
  2. anything.test('a');  // returns true 
  3. anything.test('1');  // returns true 
  4. anything.test('[');  // returns true 

嗯,先提這么幾個基礎的,我們再來看看其他的語法。

其他語法

\w "字符指的是任何字母數字字符。它的反義詞,"\W",指任何非字母數字字符。

  1. const alphaNumber = /\w/;   
  2. alphaNumber.test('a');  // returns true 
  3. alphaNumber.test('1');  // returns true 
  4. alphaNumber.test('&');  // returns false 
  5.  
  6. const notAlphaNumber = /\W/;  
  7. notAlphaNumber.test('a');  // returns false 
  8. notAlphaNumber.test('1');  // returns false 
  9. notAlphaNumber.test('&');  // returns true 

再介紹一個,"\s "字符指的是任何空白字符,而"\S "字符指的是任何非空白字符。

  1. const whitespace = /\s/;   
  2. whitespace.test('a');  // returns false 
  3. whitespace.test('1');  // returns false 
  4. whitespace.test('&');  // returns false 
  5. whitespace.test(' ');  // returns true 
  6. whitespace.test('\n');  // returns true 
  7.  
  8. const notWhitespace = /\S/;  
  9. notWhitespace.test('a');  // returns true 
  10. notWhitespace.test('1');  // returns true 
  11. notWhitespace.test('&');  // returns true 
  12. notWhitespace.test(' ');  // returns false 
  13. notWhitespace.test('\n');  // returns false 

嗯,不能全部介紹完滴,還得自己查,那么有沒有總結性的圖呢,這個時候,當然有。

一圖解千愁


手冊

這是一個第三方網站,推薦結合這個,右邊的語法參考,基本上是上面的內容。

  • https://c.runoob.com/front-end/854

左邊調試,中間是語法參考,右側是控制臺,豈不美哉。

解題

匹配的格式是=A12/B12/C12.../K23中間是乘法也行。

想了很久,首先,我們是不是可以拆成三部分呢,一頭一尾和中間部分。

開頭,我們是不是可以這么匹配:

  1. reg = /^=[A-Z]+\d+/i; 

首先的是=開頭,然后是字母,接著是數字,考慮到可能是一個或者是多個,得用“+”特殊字符。

然后我們看看預期:

  1. reg.test('=b12')  // true 
  2. reg.test('=C12') //  true 
  3. reg.test('=CC3') // true 
  4. reg.test('=CDdd35') //  true 
  5. reg.test('=CDdd 35')  // false 

嗯,我們在來看看,尾巴部分怎么寫:

  1. // 尾巴部分,應該都是 /CC12, /B234,這樣子滴 
  2. reg = /(\/|\*)[A-Z]+\d+$/i 

首先,考慮到可能是乘法和除法,于是有這樣子的**(/|*)**,需要注意的是,需要轉義一下,然后以$結尾。

  1. reg.test('/cc')  // false 
  2. reg.test('/cc12') // true 

剩下的就是中間的部分了,也就是剩下多個形如: /B231這樣子的結構,于是:

  1. reg = /((\/|\*)[A-Z]+\d+$)*/i 

最后組合一下,就是這樣子的:

  1. const multiplicationAndDivisionReg = /^=[A-Z]+\d+((\/|\*)[A-Z]+\d*$)*(\/|\*)[A-Z]+\d+$/i; 

簡單入門后,留一個思考題,之前面試看過一個有趣的題目,數字千分位。

  • '100000000.00'
  • // 輸出 '100,000,000.00'

趕緊來實戰一下吧。

最后

今天的分享,簡單的介紹了如何入門正則表達式Regex,趕緊動手學起來吧。

 

責任編輯:姜華 來源: TianTianUp
相關推薦

2022-08-29 15:26:58

MySQLSQL模式

2009-09-16 13:24:30

PHP正則表達式匹配

2009-09-16 16:22:04

正則表達式匹配

2009-09-16 18:08:14

正則表達式匹配單詞

2009-09-16 13:53:17

PHP正則表達式匹配

2010-03-10 18:57:53

Python正則表達式

2021-12-03 08:50:25

LeetCode正則表達式算法

2009-09-16 16:48:03

正則表達式匹配數字

2009-08-20 16:13:32

C#正則表達式匹配

2009-11-30 17:06:35

PHP ereg()函

2010-03-04 15:20:20

Ubuntu Patt

2010-03-15 16:21:28

Python正則表達式

2011-05-11 17:40:30

PHP正則表達式

2009-11-30 17:22:24

PHP正則表達式多行匹

2012-04-28 15:22:46

PHP

2009-08-20 13:38:58

C#正則表達式

2009-09-16 17:02:15

正則表達式匹配字符串

2009-09-16 17:38:49

正則表達式匹配任意字符

2010-07-21 10:43:25

Perl正則表達式匹配

2009-06-10 13:51:25

Java正則表達式匹配替換
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人av一区 | 国产分类视频 | 久久久久网站 | 神马久久av | 伊人一二三 | av在线影院| 综合成人在线 | 欧美日在线 | 久久福利 | 欧美最猛性xxxxx亚洲精品 | 日本精品裸体写真集在线观看 | 国产一区亚洲 | 精品久久香蕉国产线看观看亚洲 | 福利网址 | 永久网站 | 视频一二三区 | 香蕉视频黄色 | 99视频在线免费观看 | 成人免费在线观看视频 | 一区二区三区四区在线 | 久草网站 | 亚洲国产精品久久久久婷婷老年 | 国产精品一区二区三区久久 | 亚洲综合无码一区二区 | 精品国产一区二区国模嫣然 | 国产午夜精品一区二区三区 | 精区3d动漫一品二品精区 | 欧美日韩精品 | 涩涩鲁亚洲精品一区二区 | 一级免费毛片 | 欧美日韩国产三级 | 在线小视频 | 国产在线精品一区二区 | 又爽又黄axxx片免费观看 | 亚洲成人免费观看 | 久久久久久久国产精品视频 | 欧美黑人激情 | 成人自拍av | 欧美在线视频免费 | 国产99在线 | 欧美 | 日本a在线 |