首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ruby简单正则表达式语法错误

Ruby简单正则表达式语法错误
EN

Stack Overflow用户
提问于 2011-10-02 17:55:23
回答 3查看 164关注 0票数 0

我是Ruby的新手,正在为服务器编写代码。这个代码已经有半年的历史了。与此同时,Chrome将版本更新到了版本14。

下面是我的代码:

代码语言:javascript
运行
复制
supported_browsers = /Chrome\/[3-9]|Firefox\/[3-9]|\sMSIE\s|Konqueror\/[4-9]|Midori|Minefield|Shiretoko|IceCat|Opera\/9.|\sAppleWebKit/

您可以看到Chrome 3-9,但现在我尝试将其更改为:

代码语言:javascript
运行
复制
supported_browsers = /Chrome\/[3-15]|Firefox\/[3-9]|\sMSIE\s|Konqueror\/[4-9]|Midori|Minefield|Shiretoko|IceCat|Opera\/9.|\sAppleWebKit/

我得到一个语法错误。帮我找出哪里出了问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-02 18:01:52

您的错误出现在这里:[3-15]这是一个字符范围从3到1的字符类,这是不允许的。

我猜你想要:[3-9]|1[0-5],意思是3到9或者10到15

完整的正则表达式是:

代码语言:javascript
运行
复制
supported_browsers = /Chrome\/([3-9]|1[0-5])|Firefox\/[3-9]|\sMSIE\s|Konqueror\/[4-9]|Midori|Minefield|Shiretoko|IceCat|Opera\/9.|\sAppleWebKit/
票数 3
EN

Stack Overflow用户

发布于 2011-10-02 18:02:29

[3-9]是一个numeric range。它表示3或9之间的单个数字。数字范围不是您期望的方式:[3-15]不是有效范围。

如果你只是想匹配一个数字范围,你可以使用[0-9]{1,2}。它匹配0到99之间的所有内容。或[0-9]+,以减少限制。

代码语言:javascript
运行
复制
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]的,并且您想要的限制越多,正则表达式就会变得越复杂。

代码语言:javascript
运行
复制
supported_browsers = /Chrome\/(?:[3-9]|1[0-5])|Firefox\/[3-9]|\sMSIE\s|Konqueror\/[4-   9]|Midori|Minefield|Shiretoko|IceCat|Opera\/9.|\sAppleWebKit/
票数 3
EN

Stack Overflow用户

发布于 2011-10-02 18:04:14

3-15不检查范围。对于范围,您必须使用3-9|10-4将匹配1-14,例如

代码语言:javascript
运行
复制
supported_browsers = /Chrome\/([3-9]|1[0-4])|Firefox\/[3-9]|\sMSIE\s|Konqueror\/[4-9]|Midori|Minefield|Shiretoko|IceCat|Opera\/9.|\sAppleWebKit/
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7625694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档