【问题标题】:Ruby Regex for specific format alphanumerics separated by commaRuby Regex 用于以逗号分隔的特定格式字母数字
【发布时间】:2013-11-30 05:30:29
【问题描述】:

我需要验证我的 rails 表单中的文本输入是否包含一个或多个具有特定格式的字母数字,用逗号分隔。

例如,字母数字应该是 two letters + seven numbers + one letter + one numbertwo letters + 11 numbers + one letter + one number 。而且这些字母数字必须用逗号(,)隔开

US6174724B1 , US20010002490A1 (This is a valid one)

ruby , rails (This is an invalid one)

如何构建一个 ruby​​ 正则表达式来检查是否(这些字母数字具有特定格式)以及是否(它们用逗号分隔)

【问题讨论】:

    标签: ruby regex


    【解决方案1】:

    你可以用这个:

    图案

    /^(?:(?:^| , )([A-Z]{2}(?:\d{7}|\d{11})[A-Z]\d)\b)+?$/
    

    您将在捕获组 1 中获得特定格式的字母数字。

    输入

    US6174724B1,US20010002490A1(这是有效的)

    ruby , rails (这是无效的)

    输出

    Match 1: US6174724B1 
    Group 1: US6174724B1
    
    Match 2:  , US20010002490A1 
    Group 1: US20010002490A1
    

    【讨论】:

    • 它有效:)。只有两个问题,1)我必须在正则表达式的开头和结尾添加一个正斜杠,否则我在尝试加载页面时会出错。这是为什么 ? 2. 字母数字将在捕获组 1 中可用是什么意思?
    • @Stefanos 它取决于语言,通常你应该像你一样在模式的开头和结尾添加斜杠:) 我的“本机”语言是 C#,不需要我要做到这一点,无论如何在您使用 ruby​​ 时将它们添加到答案中:)
    • nice :) ,您的意思是,字母数字将在捕获组 1 中可用?
    • @Stefanos 我不确定 ruby​​ 怎么样,但通常使用正则表达式你可以在 一个匹配捕获某些组,听起来有点复杂吧?捕获组在括号 ( ) 内,因此可以通过代码访问特定组,而无需包含不必要的内容。也许这个链接会更好更简洁地解释它www.regular-expressions.info我也在ruby中找到了这个关于捕获组的问题link
    • @Stefanos Ok 在模式的开头和结尾添加了字符串边界,它现在应该可以正常工作了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 2015-10-04
    • 2021-12-16
    相关资源
    最近更新 更多