正則表達式是一種描述字符串匹配的模式,用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。正則表達式
元字符:spa
經常使用元字符 | 含義 |
. | 匹配除換行符意外的任意字符 |
\w | 匹配字母、數字、下劃線 |
\W | 匹配不是字母、不是數字、不是下劃線 |
\d | 匹配數字至關於[0-9] |
\D | 匹配不是數字的字符 |
\s | 匹配不可見字符,包括空格,換行符等 |
\S | 匹配可見字符 |
\b | 匹配一個詞的邊界 |
\B | 匹配一個非單詞邊界 |
^ | 字符串的開始位置 |
$ | 字符串的結束位置 |
表示一個字符全集:/\w\W/、/\d\D/、/\s\S/、/./s 等 code
量詞:utf-8
量詞 | 含義 |
* | 重複任意次數,至關於{0,} |
? | 重複 0 或 1 次,至關於{0,1} |
+ | 重複 1 次或更屢次,至關於{1,} |
{n} | 重複 n 次 |
{n,} | 重複 n 次或大於 n 次 |
{n,m} | 重複 n 到 m 次 |
分支&字符集unicode
分組&引用字符串
/(\d{4})-(\d{2})-(\d{2})/table
/(\d{4})-(\d{2})-\2/--------------------\2至關於(\d{2})test
/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/ ------------分組命名,group.year,group.month,group.day引用
/(?<year>\d{4})-(?<month>\d{2})-\k<month>/-----------------\k<>,命名向後引用命名
環視
正向/預測先行/順序/從左到右/pattern的前面位置 | 負向/回顧後發/逆序/從右到左/pattern的後面位置 | |
確定/正 | (?=pattern) | (?<=pattern) |
否認/負 | (?!pattern) | (?<!pattern) |
貪婪&惰性
貪婪——在匹配成功的前提下,儘量多的匹配
惰性——在匹配成功的前提下,儘量少的匹配
/.*bbb/g.test('abbbaabbba1234')
/.*?bbb/g.test('abbbaabbba1234')
修飾符&標誌
g(表示全局(global)模式,即模式將被應用於全部字符串,而非在發現第一個匹配項時當即中止)
i(不區分大小寫)
m(多行模式)
y(y 修飾符的做用與 g 修飾符相似,也是全局匹配,後一次匹配都從上一次匹配成功的下一個位置開始。不一樣之處在於,g 修飾符只要剩餘位置中存在匹配就可,而 y 修飾符確保匹配必須從剩餘的第一個位置開始,這也就是「粘連」的含義)
u(表示按unicode(utf-8)匹配,主要針對多字節好比漢字)