regex - 使用正则表达式验证用户代理
问题描述
我正在尝试验证具有以下格式的用户代理
Mozilla/5.0 (Linux; U; Android <android>; <locale>; <device> Build/<build>) AppleWebKit/<webkit> (KHTML, like Gecko) Version/4.0 Mobile Safari/<safari>
用户代理可以是 ie
Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; AFTB Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
到目前为止我的正则表达式是
Mozilla\/5\.0 \(Linux; U; Android (\d+\.)?(\d+\.)?(\*|\d+); [a-z]{2}-[a-z]{2} (AFTA|AFTN|AFTS|AFTB|AFTT|AFTM|AFTKMST12|AFTRS) Build\/([A-Z0-9])\) AppleWebKit\/(\d+\.)?(\*|\d+) \(KHTML, like Gecko\) Version\/4\.0 Mobile Safari\/(\d+\.)?(\*|\d+)
测试:https ://regex101.com/r/nXKYBB/1
但它不匹配。它有什么问题?
解决方案
你错过了一个;
之后en-de
和+
之后[A-Z0-9]
:
Mozilla\/5\.0 \(Linux; U; Android (\d+\.)?(\d+\.)?(\*|\d+); [a-z]{2}-[a-z]{2}; (AFTA|AFTN|AFTS|AFTB|AFTT|AFTM|AFTKMST12|AFTRS) Build\/([A-Z0-9]+)\) AppleWebKit\/(\d+\.)?(\*|\d+) \(KHTML, like Gecko\) Version\/4\.0 Mobile Safari\/(\d+\.)?(\*|\d+)
查看正则表达式演示
(?:...)
请注意,如果您不打算稍后使用那些捕获的子值,那么匹配非捕获组而不是捕获组可能是一个好主意,并使用它\s
来匹配空格。
此外,如果您打算匹配整个字符串,请使用^
and包装模式$
。
推荐阅读
- c++ - 计算最大成对积时的错误
- javascript - YouTube Player API - 搜索然后播放
- login - Bixby Developer Studio 不断要求我登录
- google-analytics - 为什么 GA 中的自定义报告不更新?
- dapper-simplecrud - SCOPE_IDENTITY 异常
- hyperledger-fabric - 在谷歌云中的第一个织物样本网络中建立网络时测试用例失败
- c# - 根据 combobox-uwp 改变方块的颜色
- javascript - 如何在给定字符串的 2dArray 中找到所有可能的组合
- c - 未分配重新分配的 int 指针 C
- android - 找不到 support-compat.aar (com.android.support:support-compat:26.1.0)