1. 程式人生 > 其它 >正則--基礎知識整理筆記之一

正則--基礎知識整理筆記之一

正則表示式是區分大小寫的

一、定義

1.建構函式 varreg=newRegExp('ab','g'); 2.字面量 varreg=/ab/g;
  1. g:global,全文搜尋,預設搜尋到第一個結果接停止
  2. i:ingorecase,忽略大小寫,預設大小寫敏感
  3. m:multiplelines,多行搜尋

二、預定義特殊字元

字元 含義
\t 水平製表符
\r 回車符
\n 換行符
\f 換頁符
\cX 與X對應的控制字元(Ctrl+X)
\v 垂直製表符
\0 空字元

三、預定義類

字元 等價類 含義
. [^\n\r] 除了回車符和換行符之外的所有字元
\d [0-9] 數字字元
\D [^0-9] 非數字字元
\s [\t\n\x0B\f\r] 空白符
\S [^\t\n\x0B\f\r] 非空白符
\w [a-zA-Z_0-9] 單詞字元(字母、數字、下劃線)
\W [^a-zA-Z_0-9] 非單詞字元

四、邊界

字元 含義
^ 以xx開頭
$ 以xx結尾
\b 單詞邊界,指[a-zA-Z_0-9]之外的字元
\B 非單詞邊界

五、前瞻

表示式 含義
exp1(?=exp2) 匹配後面是exp2的exp1
exp1(?!exp2) 匹配後面不是exp2的exp1

  1. 字元組
[] 字串用中括號括起來,表示匹配其中的任一字元,相當於或的意思 注意在[]裡面是沒有元字元的,都代表本身的含義,例如[.]就表示匹配一個點.的意思 例如:gr[ea]y//匹配grey或gray [^...] 表示匹配所有方括號裡未列出的字元 在特別強調,排除型字元組表示“匹配一個未列出的字元”而不是“不要匹配列出的字元”。區別在於前者必須要匹配一個例如
:r[^abc]r  //匹配出rar,rbr,rcr之外的任意r*r文字 . 匹配任意字元的字元組簡便寫法 例如:.a//匹配Aa1aga等等 | 或多選分支選擇兩者中的一個注意|將左右兩邊分為兩部分,而不管左右兩邊有多長多亂 例如:gray|grey//既可匹配gray又可匹配grey相當於gr[ae]y \ 轉義符它的作用是使元字元失去它的意義,僅僅代表其日常輸入中字元的意義。 例如,我要匹配字元.字元*  就需要在前面加反斜槓,\.  \*去除它元字元的含義。 一些需要轉義的字元列表。 \*+?|{[()^$.#和空白
  1. 方法
test() 方法用於測試字串引數中是否存正則表示式模式,如果存在則返回true,否則返回false 檢索字串中指定的值。返回true或false。
var reg=/\d+\.\d{1,2}$/g;
reg.test('123.45');   //true
reg.test('0.2');       //true
reg.test('a.34');      //false
reg.test('34.5678');   //false

  

exec() 檢索字串中指定的值。返回找到的值,並確定其位置。 返回一個數組,其中存放匹配的結果。如果未找到匹配,則返回值為null。 重要事項:如果在一個字串中完成了一次模式匹配之後要開始檢索新的字串,就必須手動地把lastIndex屬性重置為0。
var reg=/\d/g;
var r=reg.exec('a1b2c3'); 
console.log(r)  // ["1", index: 1, input: "a1b2c3"]
console.log(reg.lastIndex);   //2
 
r=reg.exec('a1b2c3');
console.log(r)   // ["2", index: 3, input: "a1b2c3"]
console.log(reg.lastIndex);   //4
 
r=reg.exec('a1b2c3');
console.log(r)  // ["3", index: 5, input: "a1b2c3"]
console.log(reg.lastIndex);   //6

  

index屬性宣告的是匹配文字的第一個字元的位置。 input屬性則存放的是被檢索的字串string。 lastIndex:正則表示式開始下一次查詢的索引位置,第一次的時候總是為0的,第一次查詢完了的時候會把lastIndex的值設為匹配到得字串的最後一個字元的索引位置加1,第二次查詢的時候會從lastIndex這個位置開始,後面的以此類推。如果沒有找到,則會把lastIndex重置為0。要注意的是,lastIndex屬性只有在有全域性標誌正則表示式中才有作用。如果我們把下面程式碼中正則表示式的g標誌去掉,那麼三次彈出的就都是true了。
var regexp = /abcd/g;
var str = 'abcdefg';
alert(regexp.test(str));  //true
alert(regexp.test(str));  //false
alert(regexp.test(str));  //true

  

注意:字串的正則方法裡lastIndex屬性是不起作用的,不管正則模式是不是全域性的。lastIndex屬性只在正則表示式物件的全域性標誌下起作用。