正則

(一)字符類

[...]  方括號內的任意字符

[^...]?  不在方括號內的任意字符

.?   ? ?除換行符和其它Unicode行終止符之外的任意字符

\w   ?任何ASCII字符組成的單詞,等價于[a-zA-Z0-9]

\W   任何非ASCII字符組成的單詞,等價于[^a-zA-Z0-9]

\s   ? 任何Unicode空白符

\S   ? 任何非Unicode空白符

\d   ? 任何數字,等價于[0-9]

\D   ? 任何非數字,等價于[^0-9]

?

(二)重復字符語法

{n,m}  匹配前一項至少n次,但不能超過m次

{n,}  ? ?匹配前一項n次或更多次

{n}  ? ? 匹配前一項n次

?   ? 匹配前一項0次或1次,等價{0,1}

+    匹配前一項1次或多次,等價于{1,}

*    ?匹配前一項0次或多次,等價于{0,}

默認貪婪匹配:/a{1,3}/ ? ?匹配'aaa'

非貪婪匹配,只需要在重復字符后面加上? ?/a{1,3}?/ ? ?匹配'a'

?

(三)選擇,分組,引用

|?   ? ?選擇,匹配該符號左邊的子表達式或右邊的子表達式:  /\d{3}|[a-z]{4}/ ?匹配三位數字或者四個小寫字母

()  ?分組

1. 可以把單獨的項組合成子表達式,以便可以像處理一個單獨的單元那樣用 | * + ?等對單元內的項進行處理: /java(script)?/

2. 分組之后可以引用 \n表示引用第n個分組表達式匹配內容: /(['"])[^'"]*\1/

?

(四)指定匹配位置

^  匹配字符串開頭

$  匹配字符串結尾

\b  ?匹配單詞邊界

?

(五)修飾符

i  不區分大小寫

g  全局匹配,即找到所有匹配,而不是找到第一個之后就停止

?

(六)String正則匹配方法

search: 參數是正則,返回一個與之匹配的字串的起始位置,匹配不到返回-1

'javascript'.search(/script/i) ? 返回4 ?

replace: 第一個參數是正則,第二個是要替換的字符串、$開頭的特殊字符串、函數

'javascript'.replace(/script/gi,'Script') ?返回javaScript

第二個參數可以是$n,代表第n個組合所匹配的字符串

'javascript'.replace(/(sc)ript/gi,"$1")?返回javasc

第二個參數可以是函數

'a=1&b=2'.replace(/(\w+)=(\w+)&?/g,function($1,$2,$3){console.log($1,$2,$3)
}) 
a=1& a 1
b=2 b 2

?

match:參數是正則,返回一個由匹配結果組成的數組

帶g:'1 ldf 3 dsfdf 4f'.match(/\d+/g) ?返回['1','3','4']

不帶g:

'1 ldf 3 dsfdf 4f'.match(/\d+/) ?返回["1", index: 0, input: "1 ldf 3 dsfdf 4f"]

'abcd'.match(/(ab)c/)? 返回["abc", "ab", index: 0, input: "abcd"] ? 還會把組合匹配到的字符放到數組中

?

(七)正則方法

test:參數為字符串,判斷是否匹配成功

/java/.test('javascript') ?返回true

exec:如果 exec() 找到了匹配的文本,則返回一個結果數組。否則,返回 null。此數組的第 0 個元素是與正則表達式相匹配的文本,第 1 個元素是與 RegExpObject 的第 1 個子表達式相匹配的文本(如果有的話),第 2 個元素是與 RegExpObject 的第 2 個子表達式相匹配的文本(如果有的話),以此類推。除了數組元素和 length 屬性之外,exec() 方法還返回兩個屬性。index 屬性聲明的是匹配文本的第一個字符的位置。input 屬性則存放的是被檢索的字符串 string。我們可以看得出,在調用非全局的 RegExp 對象的 exec() 方法時,返回的數組與調用方法 String.match() 返回的數組是相同的。

/java/.exec('javascript') ?返回["java", index: 0, input: "javascript"]

但是,當 RegExpObject 是一個全局正則表達式時,exec() 的行為就稍微復雜一些。它會在 RegExpObject 的 lastIndex 屬性指定的字符處開始檢索字符串 string。當 exec() 找到了與表達式相匹配的文本時,在匹配后,它將把 RegExpObject 的 lastIndex 屬性設置為匹配文本的最后一個字符的下一個位置。這就是說,您可以通過反復調用 exec() 方法來遍歷字符串中的所有匹配文本。當 exec() 再也找不到匹配的文本時,它將返回 null,并把 lastIndex 屬性重置為 0。

var p = /java/g
var str = 'javajavajaddd'
p.exec(str)
["java", index: 0, input: "javajavajaddd"]
p.exec(str)
["java", index: 4, input: "javajavajaddd"]

?

轉載于:https://www.cnblogs.com/webLilingyun/p/7220041.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252239.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252239.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252239.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用Cloud Studio寫python

1、進入【騰訊云開發者平臺】 2、點擊【進入工作空間】 3、點擊【新建工作空間】 4、點擊【從模版創建】 選擇你需要的空間環境,就可以開始啦!轉載于:https://juejin.im/post/5c75f79051882562962ef5d7

顯卡、顯卡驅動、顯存、GPU、CUDA、cuDNN

顯卡Video card,Graphics card,又叫顯示接口卡,是一個硬件概念(相似的還有網卡),執行計算機到顯示設備的數模信號轉換任務,安裝在計算機的主板上,將計算機的…

ros rviz顯示rosbag中的圖像和imu數據

一、rosbag相關的指令 1. rostopic list //列舉出系統中正在發布的ros 話題 2. rosbag record -a //錄制系統中所有正在發布的ros 話題 3. rosbag record topic1 topic2 .... -o bagname.bag 4. rosbag play bagname.bag //播放bag文件 5. rosbag info bagname.bag //查看…

PX4的workqueue

Workqueue相當于是中斷子程序,然后在queue的cycle里面要注意,不能在cycle函數里面用printf打印,在cycle里面printf函數是打印不出來的。 也不能在cycle里面用while(1),就是不能讓程序一直在queue里面執行,要想讓cycle執…

企業選擇 多云管理平臺 六大注意事項

企業選擇 多云管理平臺 六大注意事項 1、是否足夠簡單,學習曲線有多長 2、是否可實現自動化環境部署,日常運維作業等一系列操作? 3、是否可以管理全異構的云環境,支持主流公有云廠商的云資源? 4、是否能提供管理成本、…

面向接口編程

面向接口編程 一般在實現一個系統的時候,通常是將定義與實現合為一體,不加分離的,我認為最為理解的系統設計規范應該是所有的定義與實現分離,盡管這對于系統中某些復雜的情況有些繁煩。面向接口編程設計 使用面向接口編程思想將層與層之間通過接口依賴,下…

Java并發學習之一——線程的創建

與每個java語言中的元素一樣,線程是對象。在Java中,我們有兩種方式創建線程: 1、通過直接繼承thread類,然后覆蓋run方法。 2、構建一個實現Runnable接口的類,然后創建一個thread類對象并傳遞Runnable對象作為構造參數 …

day1||python

測試題: 0. Python 是什么類型的語言? Python是一種面向對象、解釋型、動態類型計算機程序設計語言解釋型:程序無需編譯成二進制代碼,而是在執行時對語句一條一條編譯動態類型:在程序執行過程中,可以改變變…

2.7萬字還原行業面貌,《2019 AI金融風控行業研究報告》正式上線!...

在金融科技領域,風險控制的重要性,從其關聯的金融業務和結合的技術維度可見一斑:風控涉及信用借貸、保險、支付、供應鏈金融等場景,并運用了包括生物特征識別、機器學習、自然語言處理、大數據、云計算等多項技術。 區別于美國有…

【原創】QT簡單計算器

代碼 //main.cpp#include "calculator_111.h" #include <QtWidgets/QApplication>int main(int argc, char *argv[]) { QApplication a(argc, argv); Calculator_111 w; w.show(); return a.exec(); /* //QT creator Calculator_111 win; win.show(); return…

cs堡壘機使用說明

一、堡壘機介紹 為了保證機房的網絡安全&#xff0c;IDC內所有服務器不被允許從辦公網直接ssh登錄&#xff0c;必須通過跳板機進行間接登錄。用戶通過跳板機執行的所有命令&#xff08;包括通過跳板機登錄的其他機器后的命令&#xff09;都會被保存并審計。 cs是我們登錄IDC服…

export和export default的區別

es6中export和export default的區別 export與export default均可用于導出常量、函數、文件、模塊&#xff1b;你可以在其它文件或模塊中通過import(常量 | 函數 | 文件 | 模塊)名的方式&#xff0c;將其導入&#xff0c;以便能夠對其進行使用&#xff1b;在一個文件或模塊中&am…

koa中間件機制詳解

轉自&#xff1a;https://cnodejs.org/topic/58fd8ec7523b9d0956dad945 koa是由express原班人馬打造的一個更小、更富有表現力、更健壯的web框架。 在我眼中&#xff0c;koa的確是比express輕量的多&#xff0c;koa給我的感覺更像是一個中間件框架&#xff0c;koa只是一個基礎的…

極度推薦的文章和網站

推薦文章---收錄中 因為是及時雨,這里就給他放在開頭啦&#xff1a;http://www.cnblogs.com/zhuzhenwei918/p/7241971.html webpack3.0配置指南&#xff1a;http://www.cnblogs.com/caideyipi/articles/7080010.html 超酷的偽元素網站&#xff1a;https://tympanus.net/Develop…

倍道而行:選擇排序

一、為什么學了之后過段時間又會忘記了&#xff1f; 因為沒有去運用它和認為面試需要而沒有真正的重視。現在給它賦予意義&#xff1a;1.那就是基礎牢固&#xff0c;才可觸類旁通2.真正記得和隨時可以拿出手&#xff0c;那么面試可以PK掉一大批人。不然看到一個精妙的算法就學一…

如何構建一個真實的推薦系統?

AI 前線導讀&#xff1a;隨著互聯網行業的井噴式發展&#xff0c;數據規模呈現爆炸式增長。大數據中蘊含了巨大的價值&#xff0c;但同時也來了很 “信息過載” 的問題。推薦系統作為一個廣泛應用的信息過濾系統&#xff0c;在很多領域取得了巨大的成功。在電子商務上&#xff…

volatile的適用場景

介紹 把代碼塊聲明為 synchronized&#xff0c;有兩個重要后果&#xff0c;通常是指該代碼具有 原子性&#xff08;atomicity&#xff09;和 可見性&#xff08;visibility&#xff09;。 原子性意味著個時刻&#xff0c;只有一個線程能夠執行一段代碼&#xff0c;這段代碼通過…

link和@import的區別

1、link屬于HTML標簽&#xff0c;import是css提供的 2、link是HTML標簽&#xff0c;沒有兼容問題&#xff0c;而import只在IE5以上才能識別 3、頁面被加載時&#xff0c;link會同時被加載&#xff0c;而import引用的css會等到頁面加載完再加載 4、link方式的樣式的權重高于impo…

6.java 代碼塊

代碼塊 在java中用{}括起來的稱為代碼塊&#xff0c;代碼塊可分為以下四種: 普通代碼塊構造代碼塊靜態代碼塊同步代碼塊普通代碼塊 在方法或語句中出現的{}就稱為普通代碼塊。普通代碼塊和一般語句的執行順序由他們在代碼中出現的次序決定&#xff0c;先出現先執行。 普通代碼塊…

C#如何測試代碼運行時間

第一種方式&#xff1a;System.Diagnostics.Stopwatch stopwatch new Stopwatch(); stopwatch.Start(); // 開始監視代碼運行時間 // 需要測試的代碼 .... stopwatch.Stop(); // 停止監視 TimeSpan timespan stopwatch.Elapsed; // 獲取當前實例測量得出的總時間 double …