JSON 中 15 个字符的字母数字字符的正则表达式

标签 regex json testing assertion

我正在使用 RegEx 断言 API 调用的响应,但它目前有点过于“贪婪”,最终会匹配所有类型的响应。需要 RegEx 位,因为响应中的实际 ID 每次都会不同。

RegEx 断言是这样的:

{data:\[{"name":"Mat","~id":"(.*)"},{"name":"Laurie","~id":"(.*)"}\]},"something":true}

与此正确响应相匹配的:

{data:[{"name":"Mat","~id":"4fd5ec146fc2ee0fff234234"},{"name":"Laurie","~id":"4fd5ec146fc2ee0fff234227"}]},"something":true}

以及这个不正确的回复:

{data:[{"name":"Mat","~id":"4fd5ec146fc2ee0fff234234"},{"name":"Laurie","~id":"4fd5ec146fc2ee0fff234227"},{"name":"John","~id":"4fd5ec146fc2ee0fff234237"},{"name":"Paul","~id":"4fd5ec146fc2ee0fff234238"},{"name":"George","~id":"4fd5ec146fc2ee0fff234239"}]},"something":true}

第二个 (.*) 不仅匹配第二个项目的 ID,而且匹配 ID 所有其他不需要的 对象。

所以我想当涉及到 ~id 字段时,我需要让我的 RegEx 更严格一些。由于 ID 始终是 24 个十六进制字符,因此我想用更合适的内容替换 (.*)

最佳答案

您可以使用 [^"]*[^"]{24}[0-9a-fA-F]{24} 而不是 .* 用于您的 ID 字段。

关于JSON 中 15 个字符的字母数字字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10981012/

相关文章:

java - 正则表达式捕获后视和前视

c++ - 如何在qt中使用QRegularExpression匹配字符串开头的空格?

javascript - 在 d3.js 中从 Rails 访问 JSON 信息

testing - 测试 Go 中未导出函数的命名约定

python - 从 .txt 文件 python 中提取主题标签

java - 如何使用 Java 的 String.replaceAll 方法替换以 $ 字符开头的字符串

PHP JSON 字符串格式错误

c# - JayRock 间歇性缺失值

javascript - 谷歌分析即时测试器

c - 如何在 Parasoft 中创建构建数据文件 (bdf)?