正規表示式之小有名氣

2021-09-13 22:34:51 字數 2007 閱讀 8320

之前已經了解過1

表示除a,b,c之外的字元,現在又要多一種用法了

/^test/  表示以test開頭的字元 這裡的^表示以...開頭
那麼$表示什麼呢? 它的含義是以...結尾
/test$/ 表示以test結尾的字元
首先我們要知道並不是所有的字元都與自身等價的,比如/hello/表示我們要匹配『hello』字元,但是如果想匹配food$並不能這麼寫/food$/,因為$有獨特的含義,就像我們上篇文章學到的,^這幾個符號一樣。如果想要匹配'food$'這個字串,那就需要用反斜槓進行轉義,通俗的說就是在特殊符號前面加上 就像這樣
/food\$/ 匹配food$字元
我copy了一段webpack配置,只看rules中test表示的正則就可以

在正則中.也有特定的含義,所以如果把它當字元進行匹配的話也要進行轉義根據上面所學到的,判斷下面**中的正規表示式所代表的含義,答案我已經寫在注釋中了

module.exports = ,//以.css結尾的 使用css-loader處理

// 以.ts結尾的

]}};

如果要匹配四個『a』字元,我們當然可以用/aaaa/這樣表示,如果匹配5個'a' 10個'a'呢?正則沒那麼『傻』早已為我們準備了簡便方法/a/ 表示匹配含有連續4個'a'的字元

在重複選項上,正則提供了很多方式

/t?est/  可以匹配 test 或者 est
/t+est/ 可以匹配test ttest tttest 而不能匹配est
/t*est/ 可以匹配test ttest tttest est
/a/ 匹配包含連續4個a的字串
/a/ 匹配任何含有連續4個至10個a的字串
/a/ 如果逗號後面不寫第二個引數那麼表示匹配任何含有連續4個或多於4個a的字串
這些重複操作符可以是貪婪的可以是非貪婪的,預設情況它們是貪婪的

這裡不用口語敘述,看**更直觀

遇到連續四個a即停止搜尋

var str = "aaaabbbcaadda"

var newstr = str.replace(/a+/,'嘿')//"嘿bbbcaadda"

因為加了g進行全域性匹配,我們看一看有哪些字元符合條件

開頭的4個a

c後面的2個a

d後面的a

這就是貪婪匹配遇到成串的符合條件的字元,將匹配這個』串『

var str = "aaaabbbcaadda"

var newstr = str.replace(/a+/g,'嘿')//"嘿bbbc嘿dd嘿"

如果後面在'+'後跟了'?'則表示進行非貪婪匹配,具體結果請看注釋

var str = "aaaabbbcaadda"

var newstr = str.replace(/a+?/g,'嘿')//"嘿嘿嘿嘿bbbc嘿嘿dd嘿"

上面已經說到可以用/t+est/這種用法,但是+只影響它前面的t,如果想讓+影響多個字元可以使用括號進行分組
/(ab)+/ 匹配乙個或多個連續出現的字串'ab'
var str = "abcdababef"

var newstr = str.replace(/(ab)+/g,"嘿")//"嘿cd嘿ef"

請注意cd後的連續兩個ab被替換成乙個嘿而不是兩個

可以使用豎線表示或者
/a|b/ 匹配a或b字元

/(ab)+|(cd)+/ 匹配出現一次或多次的「ab」 或者「cd」

這一篇概念有點多,不需要一下看完,分兩次看好了。本來想把一些預定義字元類寫完的,轉念一想灌輸太多內容是不利於學習的,而且那些東西也並不是很重要,只是用的時候現查的一些字母而已。所以留到下章再說

abc ↩

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d 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 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 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 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...