我是Ruby的新手,正在为服务器编写代码。这个代码已经有半年的历史了。与此同时,Chrome将版本更新到了版本14。
下面是我的代码:
supported_browsers = /Chrome\/[3-9]|Firefox\/[3-9]|\sMSIE\s|Konqueror\/[4-9]|Midori|Minefield|Shiretoko|IceCat|Opera\/9.|\sAppleWebKit/
您可以看到Chrome 3-9,但现在我尝试将其更改为:
supported_browsers = /Chrome\/[3-15]|Firefox\/[3-9]|\sMSIE\s|Konqueror\/[4-9]|Midori|Minefield|Shiretoko|IceCat|Opera\/9.|\sAppleWebKit/
我得到一个语法错误。帮我找出哪里出了问题。
发布于 2011-10-02 18:01:52
您的错误出现在这里:[3-15]
这是一个字符范围从3到1的字符类,这是不允许的。
我猜你想要:[3-9]|1[0-5]
,意思是3到9或者10到15
完整的正则表达式是:
supported_browsers = /Chrome\/([3-9]|1[0-5])|Firefox\/[3-9]|\sMSIE\s|Konqueror\/[4-9]|Midori|Minefield|Shiretoko|IceCat|Opera\/9.|\sAppleWebKit/
发布于 2011-10-02 18:02:29
[3-9]
是一个numeric range。它表示3或9之间的单个数字。数字范围不是您期望的方式:[3-15]
不是有效范围。
如果你只是想匹配一个数字范围,你可以使用[0-9]{1,2}
。它匹配0到99之间的所有内容。或[0-9]+
,以减少限制。
supported_browsers = /Chrome\/[0-9]+|Firefox\/[3-9]|\sMSIE\s|Konqueror\/[4-9]|Midori|Minefield|Shiretoko|IceCat|Opera\/9.|\sAppleWebKit/
如果您确实想验证3-15范围内的包含,那么使用正则表达式并不是最好的选择。事实上,使用正则表达式,您的范围应该是[3-9]|1[0-5]
的,并且您想要的限制越多,正则表达式就会变得越复杂。
supported_browsers = /Chrome\/(?:[3-9]|1[0-5])|Firefox\/[3-9]|\sMSIE\s|Konqueror\/[4- 9]|Midori|Minefield|Shiretoko|IceCat|Opera\/9.|\sAppleWebKit/
发布于 2011-10-02 18:04:14
3-15不检查范围。对于范围,您必须使用3-9|10-4将匹配1-14,例如
supported_browsers = /Chrome\/([3-9]|1[0-4])|Firefox\/[3-9]|\sMSIE\s|Konqueror\/[4-9]|Midori|Minefield|Shiretoko|IceCat|Opera\/9.|\sAppleWebKit/
https://stackoverflow.com/questions/7625694
复制相似问题