国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

正則表達式(一)

Ajian / 3300人閱讀

摘要:基本概念正則表達式是一種文本模式,包括普通字符例如,到之間的字母和特殊字符稱為元字符。所以還要對正則的啟始位置進行限制第一部分簡單回顧了正則表達式的基礎知識,下一部分重點介紹正則的分組語法和常用方法

前言

正則表達式在編碼中會經常使用到,但是平時只是需要的時候就去看看。往往看到那些元字符、量詞就直接跳過,直接百度了,一直沒有很深入的去了解,現在有時間就簡單總結一下。

基本概念

正則表達式是一種文本模式,包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為“元字符”)。模式描述在搜索文本時要匹配的一個或多個字符串。

正則使用場景:

1. 檢查文本中是否含有指定的特征詞
2. 找出文中匹配特征詞的位置
3. 從文本中提取信息,比如:字符串的子串
4. 修改文本
元字符

元字符是在正則表達式中你有特殊含義的非字母字符。元字符必須轉義

( ) [ ] { } ^ $ | ? * + .

修飾符

g: global,全文搜索,如果不添加,搜索到第一個匹配就停止。

i: ignore case,忽略大小寫,默認大小寫敏感。

m: mutiple lines,多行搜索

字符類匹配
字符 匹配
[...] 匹配方括號內的任意字符 例如[abcd]
[^ x ] 匹配除了x以外的任意字符 例如 [^abcd] 匹配除了abcd以外的任意字符
. 匹配除了換行符
s 匹配任意的空白符
S 匹配任意不是空白符的字符
w 匹配字母或者數字、下劃線、漢字 等價于[a-zA-Z0-9]
W 匹配不是字母或者數字、下劃線、漢字
d 匹配任意數字
D 匹配任意非數字的字符
 匹配單詞的開始或者結束的位置
重復字符匹配
字符 匹配
{n,m} 匹配前一項至少n次,但不能超過m次
{n,} 匹配前一項n次或更多次
{n} 匹配前一項n次
匹配前一項0次或者1次,也就是說前一項是可選的,等價于{0,1}
+ 匹配前一項1次或多次,等價于{1,}
* 匹配前一項0次或多次,等價于{0,}
字符類:錨字符 匹配
元字符/元符號 匹配
$ 匹配字符串的結尾,在多行檢索中,匹配一行的結尾
^ 匹配字符串的開頭,在多行檢索中,匹配一行的開頭
A 只有匹配字符串開始處
b 匹配單詞邊界,詞在 []內時無效
B 匹配非單詞邊界
G 匹配當前搜索的開始位置
 匹配字符串結束處或行尾
z 只匹配字符串結束處
字符類:記錄字符 匹配
元字符/元符號 匹配情況
(string) 用于反向引用的分組
1 或$1 匹配第一個分組中的內容
2 或$2 匹配第二個分組中的內容
3 或$3 匹配第三個分組中的內容
正則表達式修飾符
字符      含義
i        執行不區分大小寫的匹配
g        執行一個全局匹配,即找到所有匹配而非一次匹配
m        多行匹配模式,^匹配一行的開頭和字符串開頭,$匹配行的結束和字符串的結尾

構造方式

1.字面量

var pattern = /is/g;
 

eg:var reg1=/hello world (w*)/gi;

2.構造函數

var pattern = new RegExp("is", "g");

new RegExp("正則表格式字符串",正則表達式修飾符);

注意??: 因為構造函數中使用的是字符串,由于字符串轉義問題,""代表""。
RegExp對象方法

RegExp對象給我們提供了三種方法供我們使用,分別是test()、exec()和compile()。下面具體說一下這三個方法的用處。

1.test()

檢索字符串中指定的值。返回 true 或 false。這個是我們平時最常用的方法。

 var reg=/hello w{3,12}/;
 alert(reg.test("hello js"));//false
 alert(reg.test("hello javascript"));//true

2.exec()

檢索字符串中指定的值。匹配成功返回一個數組,匹配失敗返回null。

var reg=/hello/; 
console.log(reg.exec("hellojs"));//["hello"]
console.log(reg.exec("javascript"));//null

3.compile()

compile() 方法用于改變 RegExp。
compile() 既可以改變檢索模式,也可以添加或刪除第二個參數。

var reg=/hello/;
console.log(reg.exec("hellojs"));//["hello"]
reg.compile("Hello");
console.log(reg.exec("hellojs"));//null
reg.compile("Hello","i");
console.log(reg.exec("hellojs"));//["hello"]  
舉幾個例子

1.匹配下面的電話號碼:

     1. (010)88886666  
     2.  022-22334455  
     3.  02912345678

 /(?0d{2}[)-]?d{8}/;
 

驗證如下

var regex = /(?0d{2}[)-]?d{8}/;
regex.test(" 02912345678")
regex.test(" 022-22334455")
regex.test("(010)88886666")
true

2.匹配ip地址
IP地址格式可表示為:XXX.XXX.XXX.XXX,XXX取值范圍是0-255,前三段加一個.重復了三次,在與最后一段合并及組成IP地址的完整格式。
最簡單的寫法 /([0-9]{1,3}.){3}[0-9]{1,3}/
但是這樣會匹配到很多無效的ip xxx的范圍超過255.
所以對這個寫法進行改進

當xxx只有一位的時候 取值的范圍是[1-9] 可以表示為[1-9]

當xxx為兩位時 取值范圍為[0-99] 可以表示為 [1-9]d

當xxx為三位數時最高位取值為1 取值范圍為[100 - 199] 可以表示為[1]d{2}
最高位取值為2 第二位不超過5時 取值范圍為[200 - 249] 可以表示為2[0-4]d
最高位取值為2,十位取值5,個位取值0-5 取值范圍為 [250 - 255] 表示為 25[0-5]

將這三種情況合并可以表示(25[0-5]|2[0-4]d|((1d{2})|([1-9]?d)))

整個ip的正則可以表示為
((25[0-5]|2[0-4]d|((1d{2})|([1-9]?d))).){3}(25[0-5]|2[0-4]d|((1d{2})|([1-9]?d)))
但是這還存在問題 現在只要字符串中有一部分能夠通過校驗test就會返回true 例如2313.2.3.4。

var regex = /((25[0-5]|2[0-4]d|((1d{2})|([1-9]?d))).){3}(25[0-5]|2[0-4]d|((1d{2})|([1-9]?d)))/;
regex.test("3424.2.3.2");
true

所以還要對正則的啟始位置進行限制

var regex = /^((25[0-5]|2[0-4]d|((1d{2})|([1-9]?d))).){3}(25[0-5]|2[0-4]d|((1d{2})|([1-9]?d)))$/;
regex.test("3424.2.3.2");
false

第一部分簡單回顧了正則表達式的基礎知識,下一部分重點介紹正則的分組語法 和 常用方法

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/90001.html

相關文章

  • 正則達式

    摘要:本文內容共正則表達式火拼系列正則表達式回溯法原理學習正則表達式,是需要懂點兒匹配原理的。正則表達式迷你書問世了讓幫你生成和解析參數字符串最全正則表達式總結驗證號手機號中文郵編身份證地址等是正則表達式的縮寫,作用是對字符串執行模式匹配。 JS 的正則表達式 正則表達式 一種幾乎可以在所有的程序設計語言里和所有的計算機平臺上使用的文字處理工具。它可以用來查找特定的信息(搜索),也可以用來查...

    bang590 評論0 收藏0
  • JavaScript正則達式的匹配模式

    摘要:選擇分組和引用正則表達式的語法還包括指定選擇項子表達式分組和引用前一子表達式的特殊字符。帶圓括號的表達式的另一個用途是允許在同一正則表達式的后部引用前面的子表達式。 正則表達式(regular expression)是一個描述字符模式的對象。JavaScript的 RegExp類 表示正則表達式,String和RegExp都定義了方法,后者使用正則表達式進 行強大的模式匹配和文本檢索與...

    wqj97 評論0 收藏0
  • JS正則達式條龍講解,從原理和語法到JS正則、ES6正則擴展,最后再到正則實踐思路

    摘要:控制權和傳動這兩個詞可能在搜一些博文或者資料的時候會遇到,這里做一個解釋先控制權是指哪一個正則子表達式可能為一個普通字符元字符或元字符序列組成在匹配字符串,那么控制權就在哪。 溫馨提示:文章很長很長,保持耐心,必要時可以跳著看,當然用來查也是不錯的。 正則啊,就像一座燈塔,當你在字符串的海洋不知所措的時候,總能給你一點思路;正則啊,就像一臺驗鈔機,在你不知道用戶提交的鈔票真假的時候,...

    Michael_Lin 評論0 收藏0
  • Python正則達式很難?篇文章搞定他,不是我吹!

    摘要:正則表達式語法字符與字符類特殊字符以上特殊字符要想使用字面值,必須使用進行轉義字符類包含在中的一個或者多個字符被稱為字符類,字符類在匹配時如果沒有指定量詞則只會匹配其中的一個。 1. 正則表達式語法 1.1 字符與字符類 1 特殊字符:.^$?+*{}| 以上特殊字符要想使用字面值,必須使用進行轉義 2 字符類 1. 包含在[]中的一個或者多個字符被稱為字符類,字符類在匹配時如果沒有指...

    dcr309duan 評論0 收藏0
  • JavaScript正則達式RegExp

    摘要:的正則表達式體系是參照建立的。字面量形式構造函數形式以上都是創建了一個內容為的正則表達式,其表示對一個手機號碼的校驗。按照給定的正則表達式進行替換,返回替換后的字符串。 正則表達式,也稱規則表達式,經常使用其來完成對字符串的校驗和過濾。由于正則表達式的靈活性、邏輯性和功能性都非常強大,而且 可以利用很簡單的方式完成對復雜字符串的控制,所以很多程序語言都支持正則表達式。在JavaScri...

    SexySix 評論0 收藏0
  • JavaScript 中的正則達式

    摘要:正則表達式的意義中的正則表達式使用表示,可以使用構造函數來創建對象,不過對象更多的是通過一種特殊的直接量語法來創建。用構造函數也可以定義一個與之等價的正則表達式,代碼如下正則表達式的模式規則是由一個字符序列組成的。 正則表達式的模式匹配 正則表達式(regular expression)是一個描述字符模式的對象。javascript的RegExp對象表示正則表達式,String和Reg...

    _Dreams 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<