關于正規表達式,當我們了解它就不難,不了解就很難,其實任何事情都是這樣,沒有人一生下來就啥都會,說白了,每個人都是一個學習了解進步的過程。學習和掌握正規表達式可能并不是太簡單,因為它确實是有點像“外星語”。
市面上很早就有關于正規表達式的專業技術書記,在軟體開發、性能測試、自動化測試、測試開發中都可以看到正規表達式優美的舞姿。
對于靜态文本内容, 因為有提供與預期的搜尋結果比對的确切文本内容,典型的搜尋和替換操作已經足夠了,但它缺乏靈活性。如果要搜尋動态内容,這就變得很困難,而正規表達式能很簡潔強大的解決這一相關問題。
總而言之、言而總之,我們使用正規表達式可以很友善的過濾、篩選出需要的特定資料資訊。
"^\d+$" //非負整數(正整數 + 0)
"^[0-9]*[1-9][0-9]*$" //正整數
"^((-\d+)|(0+))$" //非正整數(負整數 + 0)
"^-[0-9]*[1-9][0-9]*$" //負整數
"^-?\d+$" //整數
"[x{4e00}-x{9fa5}]+/u //比對漢字中文
“^d{15}|d{}18$” // 身份證号(15位或18位數字)
“^((13[0-9])|(15[^4,\\D])|(18[0,0-9]))\\d{8}$ //
手機号
"^(-?\d+)(\.\d+)?$" //浮點數
"^[A-Za-z]+$" //由26個英文字母組成的字元串
"^[A-Z]+$" //由26個英文字母的大寫組成的字元串
"^[a-z]+$" //由26個英文字母的小寫組成的字元串
"^[A-Za-z0-9]+$" //由數字和26個英文字母組成的字元串
"^\w+$" //由數字、26個英文字母或者下劃線組成的字元串
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$" //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日
"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" //Emil
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email位址
"(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?" //電話号碼
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$" //IP位址
^[-+]?\d+(\.\d+)?$ //值類型正規表達式
token在app登入後,相當于一個憑條,代表了該使用者的唯一通行證,放到header裡面傳遞到另外的接口。
---------接口以及傳回的響應資料如下:---------
調用如下包含正規表達式的汗數,則可以得到token為
------------基于python的函數如下----------
def GetToken(): #取使用者登入的token值
global token #定義token全局變量
url ='http://'+HOSTNAME+'/buyer/user/login.do' #接口的url
params ={
'phone': '13798359580',
'pwd': '123456',
} #參數為登入手機号和密碼
request =urllib2.Request(url = url, data = urllib.urlencode(params)) #發送接口請求url和參數
response= urllib2.urlopen(request) #傳回響應資料
data =response.read() #傳回響應資料
regx ='.*"token":"(.*)","ud"'
#正規表達式toekn,左比對 "token":" 右比對","ud"'
pm =re.search(regx, data) #取token比對值
token =pm.group(1) #如果比對到則傳回token值
returnFalse
購物送出訂單時會生成一個訂單編号,那麼接口自動化測試時,要根據這個訂單編号去進行支付等。這時要動态取值,即用到正規表達式去動态比對需要的這個訂單編号。
調用如下包含正規表達式的汗數,則可以得到preOrderSN為
#預送出訂單參數取動态值,訂單編号preOrderSN,引用時比如strinfo = re.compile('{preOrderSN}')
#-------------------------------。
def preOrderSN(results):
global preOrderSN
#-預送出訂單取值的正規表達式,左比對"preOrderSN":" 右比對"toHome"
regx ='.*"preOrderSN":"(.*)","toHome"'
pm =re.search(regx, results)
if pm:
#------如果比對到則轉換為中文并傳回值-----------
preOrderSN = pm.group(1).encode('utf-8')
return preOrderSN
#-------------------------------。