關於正則的 符號,獲取控制 都代表什麼意思?
正規表示式元字元是包含特殊含義的字元。它們有一些特殊功能,可以控制匹配模式的方式。反斜槓後的元字元將失去其特殊含義。
字元類:單個字元和數字
元字元/元符號 | 匹配情況 |
. | 匹配除換行符外的任意字元 |
[a-z0-9] | 匹配括號中的字符集中的任意字元 |
[^a-z0-9] | 匹配任意不在括號中的字符集中的字元 |
\d | 匹配數字 |
\D | 匹配非數字,同[^0-9]相同 |
\w | 匹配字母和數字及_ |
\W | 匹配非字母和數字及_ |
字元類:空白字元
元字元/元符號 | 匹配情況 |
\0 | 匹配null字元 |
\b | 匹配空格字元 |
\f | 匹配進紙字元 |
\n | 匹配換行符 |
\r | 匹配回車字元 |
\t | 匹配製表符 |
\s | 匹配空白字元、空格、製表符和換行符 |
\S | 匹配非空白字元 |
字元類:錨字元
元字元/元符號 | 匹配情況 |
^ | 行首匹配 |
$ | 行尾匹配 |
\A | 只有匹配字串開始處 |
\b | 匹配單詞邊界,詞在[]內時無效 |
\B | 匹配非單詞邊界 |
\G | 匹配當前搜尋的開始位置 |
\Z | 匹配字串結束處或行尾 |
\z | 只匹配字串結束處 |
字元類:重複字元
元字元/元符號 | 匹配情況 |
x? | 匹配0個或1個x |
x* | 匹配0個或任意多個x |
x+ | 匹配至少一個x |
(xyz)+ | 匹配至少一個(xyz) |
x{m,n} | 匹配最少m個、最多n個x |
字元類:替代字元
元字元/元符號 | 匹配情況 |
this|where|logo | 匹配this或where或logo中任意一個 |
字元類:記錄字元
元字元/元符號 | 匹配情況 |
(string) | 用於反向引用的分組 |
\1或$1 | 匹配第一個分組中的內容 |
\2或$2 | 匹配第二個分組中的內容 |
\3或$3 | 匹配第三個分組中的內容 |
/*使用點元字元*/
var pattern = /g..gle/; //.匹配一個任意字元
var str = 'google';
alert(pattern.test(str));
/*重複匹配*/
var pattern = /g.*gle/; //.匹配0個一個或多個
var str = 'google'; //*,?,+,{n,m}
alert(pattern.test(str));
/*使用字元類匹配*/
var pattern = /g[a-zA-Z_]*gle/; //[a-z]*表示任意個a-z中的字元
var str = 'google';
alert(pattern.test(str));
var pattern = /g[^0-9]*gle/; //[^0-9]*表示任意個非0-9的字元
var str = 'google';
alert(pattern.test(str));
var pattern = /[a-z][A-Z]+/; //[A-Z]+表示A-Z一次或多次
var str = 'gOOGLE';
alert(pattern.test(str));
/*使用元符號匹配*/
var pattern = /g\w*gle/; //\w*匹配任意多個所有字母數字_
var str = 'google';
alert(pattern.test(str));
var pattern = /google\d*/; //\d*匹配任意多個數字
var str = 'google444';
alert(pattern.test(str));
var pattern = /\D{7,}/; //\D{7,}匹配至少7個非數字
var str = 'google8';
alert(pattern.test(str));
/*使用錨元字元匹配*/
var pattern = /^google$/; //^從開頭匹配,$從結尾開始匹配
var str = 'google';
alert(pattern.test(str));
var pattern =/goo\sgle/; //\s可以匹配到空格
var str = 'google';
alert(pattern.test(str));
var pattern =/google\b/; //\b可以匹配是否到了邊界
var str ='google';
alert(pattern.test(str));
/*使用或模式匹配*/
var pattern = /google|baidu|bing/; //匹配三種其中一種字串
var str = 'google';
alert(pattern.test(str));
/*使用分組模式匹配*/
var pattern = /(google){4,8}/; //匹配分組裡的字串4-8次
var str = 'googlegoogle';
alert(pattern.test(str));
var pattern = /8(.*)8/; //獲取8..8之間的任意字元
var str = 'This is 8google8';
str.match(pattern);
alert(RegExp.$1); //得到第一個分組裡的字串內容
var pattern = /8(.*)8/;
var str = 'This is 8google8';
var result =str.replace(pattern,'<strong>$1</strong>'); //得到替換的字串輸出
document.write(result);
var pattern = /(.*)\s(.*)/;
var str = 'google baidu';
var result = str.replace(pattern, '$2 $1'); //將兩個分組的值替換輸出
document.write(result);
貪 婪 | 惰 性 |
+ | +? |
? | ?? |
* | *? |
{n} | {n}? |
{n,} | {n,}? |
{n,m} | {n,m}? |
/*關於貪婪和惰性*/
var pattern = /[a-z]+?/; //?號關閉了貪婪匹配,只替換了第一個
var str = 'abcdefjhijklmnopqrstuvwxyz';
var result = str.replace(pattern, 'xxx');
alert(result);
var pattern = /8(.+?)8/g; //禁止了貪婪,開啟的全域性
var str = 'This is 8google8, That is 8google8,There is 8google8';
var result =str.replace(pattern,'<strong>$1</strong>');
document.write(result);
var pattern = /8([^8]*)8/g; //另一種禁止貪婪
var str = 'This is 8google8, That is 8google8,There is 8google8';
var result =str.replace(pattern,'<strong>$1</strong>');
document.write(result);
/*使用exec返回陣列*/
var pattern = /^[a-z]+\s[0-9]{4}$/i;
var str = 'google 2012';
alert(pattern.exec(str)); //返回整個字串
var pattern = /^[a-z]+/i; //只匹配字母
var str = 'google 2012';
alert(pattern.exec(str)); //返回google
var pattern = /^([a-z]+)\s([0-9]{4})$/i; //使用分組
var str = 'google 2012';
alert(pattern.exec(str)[0]); //google 2012
alert(pattern.exec(str)[1]); //google
alert(pattern.exec(str)[2]); //2012
/*捕獲性分組和非捕獲性分組*/
var pattern = /(\d+)([a-z])/; //捕獲性分組
var str = '123abc';
alert(pattern.exec(str));
var pattern = /(\d+)(?:[a-z])/; //非捕獲性分組
var str = '123abc';
alert(pattern.exec(str));
/*使用分組巢狀*/
var pattern = /(A?(B?(C?)))/; //從外往內獲取
var str = 'ABC';
alert(pattern.exec(str));
/*使用前瞻捕獲*/
var pattern = /(goo(?=gle))/; //goo後面必須跟著gle才能捕獲
var str = 'google';
alert(pattern.exec(str));
/*使用特殊字元匹配*/
var pattern = /\.\[\/b\]/; //特殊字元,用\符號轉義即可
var str = '.[/b]';
alert(pattern.test(str));
/*使用換行模式*/
var pattern = /^\d+/mg; //啟用了換行模式
var str = '1.baidu\n2.google\n3.bing';
var result = str.replace(pattern, '#');
alert(result);
相關文章
- 2020年兩會:關於“遊戲”代表們都說了什麼?遊戲
- C語言中的關鍵字有哪些,分別代表什麼意思C語言
- 關於轉義符 在php正則中的匹配問題PHP
- 使用正則擷取URL,獲取你想要的
- 機器學習中的正則化到底是什麼意思?機器學習
- PHP中的符號 ->、=> 和 :: 分別表示什麼意思?以及this,self,parent三個關鍵字的理解!PHP符號
- 如何建立和獲取正則物件?物件
- hero 和 features 在主題中代表什麼意思
- JavaScript 中的 SOLID 原則(一):“S”代表什麼JavaScriptSolid
- JavaScript 中的 SOLID 原則(四):“I”代表什麼JavaScriptSolid
- PHP 正則獲取域名(一級域名)PHP
- 架構 dev && sit && uat && prd 分別代表什麼意思架構dev
- 關於特殊符號&與& 的處理符號
- Linux中RAID有哪幾種?分別代表什麼意思?LinuxAI
- iOS獲取當前控制器的正確方式iOS
- javascript事件捕獲是什麼意思JavaScript事件
- 關於正則位置匹配(斷言)的技巧
- 正則匹配的捕獲組
- 正則中關於環視(lookaround)的小例子
- Bash 指令碼例項:獲取符號連結的目標位置指令碼符號
- 獲取的 Cookie 為什麼無法用於爬蟲Cookie爬蟲
- 為什麼 JavaScript 的私有屬性使用 # 符號JavaScript符號
- 字串切片識別符號是什麼字串符號
- Python多行註釋符號是什麼?Python符號
- 獲取app版本號相關資訊APP
- SQL 兩個冒號連用什麼意思?SQL
- 關於如何獲取資料的方法
- 正則式表達是什麼,有什麼作用
- 關於uni-app獲取裝置IMEI、IMSI、型號、廠商APP
- 正則關於特殊字元下劃線_的 校驗字元
- 關於 GO 中 flag.StringVar 或者 flag.String 都獲取不到值的問題Go
- python中的class代表什麼Python
- 什麼是DMN決策模型和符號?模型符號
- version-script 控制 so的符號輸出符號
- python中三個單引號是什麼意思Python
- 識別符號的命名規則和規範符號
- latex 屬於符號和根號符號
- 透過硬體識別符號獲取過程映像輸入符號