有效用户代理的正则表达式

时间:2013-05-05 07:06:35

标签: language-agnostic http-headers

我正在尝试编写一个regexp,用于验证用户提供的用户代理是否有效。

我找到http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html部分“14.43 User-Agent”:

  

14.43 User-Agent

     

User-Agent请求标头字段包含有关发起请求的用户代理的信息。这是出于统计目的,跟踪协议违规以及自动识别用户代理以便定制响应以避免特定的用户代理限制。用户代理应该包含带有请求的字段。该字段可以包含多个产品令牌(第3.8节)和标识代理的注释以及构成用户代理重要部分的任何子产品。按照惯例,产品令牌按其识别应用程序的重要性顺序列出。

  User-Agent     = "User-Agent" ":" 1*( product | comment )
     

示例:

  User-Agent: CERN-LineMode/2.15 libwww/2.17b3

但我不确定它是什么意思1*。任何人都可以解释它或写正则表达式吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您查看notation at the start of the RFC,则可以看到N*M rule表示NM重复ruleN是可选的,默认为零。 M是可选的,默认为无穷大。在正常的正则表达式中,这转换为:rule{N,M}

在您的情况下,1*表示一次或多次重复。在普通正则表达式中,您可以使用postfix +运算符:rule+