正則表達式語法簡介

jmeter裏接口請求結束後,如果後續接口請求想要獲取本次返回結果的內容,就需要正則表達式提取器來獲取參數,當然也可以用json path extractor來提取(這個簡單一些)。不過Jmeter裏很多地方的約束條件和斷言都是需要正則表達式來匹配的,所以大家還是要學習一下正則表達式的語法,以便更好更效率的完成測試內容。下面簡單介紹一下常用的語法,這次先寫一半,下次再補另一半。正則表達式的內容還是很多的,我也只是學了其中的一些皮毛,通用的東西,後期再慢慢深入吧,而且要學以致用,學的東西一定要親自實際體驗一下才會記得牢,好了,言歸正轉。

  我參考的網站是deerchao.net,作者真是偉大,文章也很幽默,也是老資格的人了,哈哈。也可以直接忽略我的文章,直接看大牛的文章學習。那這裏我就直接從字符匹配的語法來進行實例講解了,可以下載網站裏的正則表達式測試工具,直接在工具裏體驗。

這裏寫圖片描述

下面列舉元字符語法:

1.\bhi\b : 匹配只有hi的字符,\b代表的位置,第一個\b代表單詞開始的位置,第二個\b代表單詞結束的位置 
2.\bhi\b.*\bthis\b : 匹配hi的字符後,中間有任意個字符後,後面是this的字符 
3. . : 表示任意字符的元字符 
4. *:表示任意數量的元字符 
5. \d : 表示任意一個數字 
6. \d{2}: 表示任意一個數字出現兩次,相當於\d\d 
7. \s : 匹配任意的空白符,包括空格,換行符,製表符(tab),中文全角空格 
8. \w : 匹配字母,數字,下劃線或漢字 
9. \d+ : 匹配一個或更多連續的數字 
10. \b\w{2}\b : 匹配剛好有兩個字符的單詞 
11. \b : 匹配單詞的開始和結束 
12. ^ : 匹配字符串的開始 
13. :匹配字符串的結束,例:\d2,5:匹配字符串的結束,例:\d2,5 表示輸入的數字必須是2位(包含)到5位(包含)之間 
14. \ : 轉義字符,如果要查找元字符就需要用轉義字符來完成,比如: deerchao.net 實際上是deerchao.net 
15. 重複次數說明: *是重複0次或多次,+是重複1次或多次,?是重複零次或一次,{n} 是重複n次,{n,}是重複n次到多次,{n,m}是重複n次到m次 
16. [] : 括號裏的字符會被匹配,比如[ab]匹配a或b字符,[,?]匹配逗號或問號 
17. [a-z0-9A-Z] : 相當於匹配\w 
18. | : 匹配或規則。比如: (0\d{2})[- ]?\d{8}|(0\d{3})[- ]\d{7}|0\d{2}[- ]?\d{8}|0\d{3}[- ]?\d{7} 這個就是匹配電話號碼的,如:012-56236562, 0536-1234567,(0536)-1234567,01212345678 
19. ():匹配分組,255.134.123.123 或 193.168.1.1 匹配表達式爲: 
(([01]?\d\d?|25[0-5]|2[0-4]\d).){3}([01]?\d\d?|25[0-5]|2[0-4]\d) 
20. \W : 匹配任意不是字母,數字,下劃線,漢字的字符 
21. \S : 匹配任意不是空白符的字符 
22. \D : 匹配任意非數字的字符 
23. \B : 匹配不是單詞開頭或結尾的位置 
24. [^x] : 匹配除了x以外的任意字符 
25. [^aeiou] : 匹配除了aeiou以外的任意字符

以上只列表了基本的正則表達式一半的元字符語法,後面再繼續第二部分的編寫。

這裏寫圖片描述

解釋:

(1)引用名稱:下一個請求要引用的參數名稱,如填寫activityID,則可用${activityID}引用它。

(2)正則表達式:

    ()括起來的部分就是要提取的。

    .匹配任何字符串。 
    +:一次或多次。 
    ?:不要太貪婪,在找到第一個匹配項後停止。 
注:(.+?)[.\n]+可以匹配換行符在內的所有字符。 
(3)模板:用 
引用起來,如果在正則表達式中有多個正則表達式(多個括號括起來的東東),則可以是2引用起來,如果在正則表達式中有多個正則表達式(多個括號括起來的東東),則可以是2引用起來,如果在正則表達式中有多個正則表達式(多個括號括起來的東東),則可以是2 
3等等,表示解析到的第幾個值給title。如:等等,表示解析到的第幾個值給title。如:1$表示解析到的第1個值

(4)匹配數字:0代表隨機取值,1代表全部取值,通常情況下填0,如果在LR中,取出的值是一個數組,還得處理一下,LR11版本用一個隨機的函數就可以不用寫大段的代碼來處理數組。

(5)缺省值:如果參數沒有取得到值,那默認給一個值讓它取。

__________________________________________________________________________________________________________________________________________________________________________________________________________

一、校驗數字的表達式

  • 數字:^[0-9]*$
  • n位的數字:^\d{n}$
  • 至少n位的數字:^\d{n,}$
  • m-n位的數字:^\d{m,n}$
  • 零和非零開頭的數字:^(0|[1-9][0-9]*)$
  • 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(\.[0-9]{1,2})?$
  • 帶1-2位小數的正數或負數:^(\-)?\d+(\.\d{1,2})$
  • 正數、負數、和小數:^(\-|\+)?\d+(\.\d+)?$
  • 有兩位小數的正實數:^[0-9]+(\.[0-9]{2})?$
  • 有1~3位小數的正實數:^[0-9]+(\.[0-9]{1,3})?$
  • 非零的正整數:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
  • 非零的負整數:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
  • 非負整數:^\d+$ 或 ^[1-9]\d*|0$
  • 非正整數:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
  • 非負浮點數:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
  • 非正浮點數:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
  • 正浮點數:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
  • 負浮點數:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
  • 浮點數:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

校驗字符的表達式

  • 漢字:^[\u4e00-\u9fa5]{0,}$
  • 英文和數字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
  • 長度爲3-20的所有字符:^.{3,20}$
  • 由26個英文字母組成的字符串:^[A-Za-z]+$
  • 由26個大寫英文字母組成的字符串:^[A-Z]+$
  • 由26個小寫英文字母組成的字符串:^[a-z]+$
  • 由數字和26個英文字母組成的字符串:^[A-Za-z0-9]+$
  • 由數字、26個英文字母或者下劃線組成的字符串:^\w+$ 或 ^\w{3,20}$
  • 中文、英文、數字包括下劃線:^[\u4E00-\u9FA5A-Za-z0-9_]+$
  • 中文、英文、數字但不包括下劃線等符號:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
  • 可以輸入含有^%&',;=?$\"等字符:[^%&',;=?$\x22]+
  • 禁止輸入含有~的字符:[^~\x22]+

三、特殊需求表達式

  • Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
  • 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
  • InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
  • 手機號碼:^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
  • 電話號碼("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
  • 國內電話號碼(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
  • 電話號碼正則表達式(支持手機號碼,3-4位區號,7-8位直播號碼,1-4位分機號): ((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)
  • 身份證號(15位、18位數字),最後一位是校驗位,可能爲數字或字符X:(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)
  • 帳號是否合法(字母開頭,允許5-16字節,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
  • 密碼(以字母開頭,長度在6~18之間,只能包含字母、數字和下劃線):^[a-zA-Z]\w{5,17}$
  • 強密碼(必須包含大小寫字母和數字的組合,不能使用特殊字符,長度在 8-10 之間):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$
  • 強密碼(必須包含大小寫字母和數字的組合,可以使用特殊字符,長度在8-10之間):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
  • 日期格式:^\d{4}-\d{1,2}-\d{1,2}
  • 一年的12個月(01~09和1~12):^(0?[1-9]|1[0-2])$
  • 一個月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$
  • 錢的輸入格式:
    1. 有四種錢的表示形式我們可以接受:"10000.00" 和 "10,000.00", 和沒有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$
    2. 這表示任意一個不以0開頭的數字,但是,這也意味着一個字符"0"不通過,所以我們採用下面的形式:^(0|[1-9][0-9]*)$
    3. 一個0或者一個不以0開頭的數字.我們還可以允許開頭有一個負號:^(0|-?[1-9][0-9]*)$
    4. 這表示一個0或者一個可能爲負的開頭不爲0的數字.讓用戶以0開頭好了.把負號的也去掉,因爲錢總不能是負的吧。下面我們要加的是說明可能的小數部分:^[0-9]+(.[0-9]+)?$
    5. 必須說明的是,小數點後面至少應該有1位數,所以"10."是不通過的,但是 "10" 和 "10.2" 是通過的:^[0-9]+(.[0-9]{2})?$
    6. 這樣我們規定小數點後面必須有兩位,如果你認爲太苛刻了,可以這樣:^[0-9]+(.[0-9]{1,2})?$
    7. 這樣就允許用戶只寫一位小數.下面我們該考慮數字中的逗號了,我們可以這樣:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
    8. 1到3個數字,後面跟着任意個 逗號+3個數字,逗號成爲可選,而不是必須:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$
    9. 備註:這就是最終結果了,別忘了"+"可以用"*"替代如果你覺得空字符串也可以接受的話(奇怪,爲什麼?)最後,別忘了在用函數時去掉去掉那個反斜槓,一般的錯誤都在這裏
  • xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
  • 中文字符的正則表達式:[\u4e00-\u9fa5]
  • 雙字節字符:[^\x00-\xff] (包括漢字在內,可以用來計算字符串的長度(一個雙字節字符長度計2,ASCII字符計1))
  • 空白行的正則表達式:\n\s*\r (可以用來刪除空白行)
  • HTML標記的正則表達式:<(\S*?)[^>]*>.*?|<.*? /> ( 首尾空白字符的正則表達式:^\s*|\s*$或(^\s*)|(\s*$) (可以用來刪除行首行尾的空白字符(包括空格、製表符、換頁符等等),非常有用的表達式)
  • 騰訊QQ號:[1-9][0-9]{4,} (騰訊QQ號從10000開始)
  • 中國郵政編碼:[1-9]\d{5}(?!\d) (中國郵政編碼爲6位數字)
  • IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章