背景和目的
接口测试过程中难免会遇到由于有转义符号正则表达式提取不出来的情况,根据小伙伴们的分享和参考自己实践总结了多种情况
参考
首先,感谢如下常见转义字符,感谢提供参考的小伙伴 参考:https://blog.csdn.net/ththcc/article/details/78165774
$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘ ' 或 ‘ '。要匹配 $ 字符本身,请使用 $。
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 和和。
* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 *。
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 +。
. 匹配除换行符 之外的任何单字符。要匹配 .,请使用 。
[ ] 标记一个中括号表达式的开始。要匹配 [,请使用 [。
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 ?。
将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, ‘n' 匹配字符 ‘n'。' ' 匹配换行符。序列 ‘\' 匹配 “”,而 ‘(' 则匹配 “(”。
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 ^。
{ } 标记限定符表达式的开始。要匹配 {,请使用 {。
| 指明两项之间的一个选择。要匹配 |,请使用 |。
分析:在有 [ 或 ] 的地方我们都要使用转义字符/ 如:/[ 和 /]
情况1:中括号[]转义符
问题:需要截取"Org":"[0013]总部配送中心","Id":"1001" 中的 0013字符,如何截取?
解决:通过正则表达式提取,添加斜杠/解决
"Org":"[(.+?)]总部配送中心","Id" 和 "Org":"[(.*?)]总部配送中心","Id" 两种方式都可以,截图如下:
情况2:响应断言包含斜杠 时需要转义
1、正常情况下,响应字符是这样的
{"Success":true,"ErrorCode":0,"Message":"un-sxcs","Data":{}}
2、有时候会有斜杠的response,此时断言会报错,因为无法识别转义字符,需要再转义一次
{"msg":"{"fail":0,"total\":5000,"success":5000}
解决:添加斜杠解决响应断言失败问题
{"msg":"{\"fail\":0,\"total\":5000,\"success\":5000}