首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ruby有效车牌正则表达式

Ruby有效车牌正则表达式
EN

Stack Overflow用户
提问于 2016-08-10 13:59:52
回答 2查看 653关注 0票数 0

我试图用RUBY编写一个函数,以确定给定的字符串是否是有效的车牌。有效的车牌有以下格式:3个大写字母,后面跟着一个破折号,后面跟着4个数字。例:HES-2098.

我编写了以下函数,但需要一些模式匹配的帮助。

代码语言:javascript
运行
复制
def liscence()
  plate = "HES-2098"
  plateNo = plate.upcase
 if(plate.length == 8)

   if(plate == plateNo)

    if(/\A-Z\A-Z\A-Z\-\d{4}/.match(plate))
       puts "valid"
     else
       puts "invalid"
     end


   else
     puts "First 3 letter must be uppercase"
   end

 else
   puts "Only 8 char long"

 end

end

liscence()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-10 14:24:43

您的regex没有工作,因为\A匹配一个字符串开始位置,该位置只能是一个字符串中的一个(并且您有三个)。要匹配大写的ASCII字母,可以使用[A-Z]字符类。

您可以使用

代码语言:javascript
运行
复制
if /\A[A-Z]{3}-[0-9]{4}\z/ =~ plate

请参阅regex红宝石演示。

模式细节

  • \A -字符串的开始(不是行,如^)锚点
  • [A-Z]{3} -由于使用了限制量词{n},所以大写的ASCII字母(来自字符类中的[A-Z]范围)
  • - -文字连字符(没有必要在字符类之外转义)
  • [0-9]{4} -精确4个ASCII位数
  • \z -字符串锚点的末尾(而不是与行尾匹配的$ )
票数 2
EN

Stack Overflow用户

发布于 2016-08-10 14:02:30

代码语言:javascript
运行
复制
plate[/\A[A-Z]{3}-\d{4}\z/] ? 'valid' : 'invalid'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38875588

复制
相关文章

相似问题

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