【问题标题】:Validate the format of a string of comma separated words with regex使用正则表达式验证逗号分隔单词字符串的格式
【发布时间】:2013-04-14 14:29:01
【问题描述】:

我正在尝试使用正则表达式从 ruby​​ 类的文本字段中验证一串逗号分隔的单词。以下内容应该是有效的:

word

word, word, word

word,word,word

以下内容应该是无效的:

word word word

我认为这会起作用

/([a-z]+){1}(,\s*[a-z]+)*/i

在 Rubular 上,它似乎是有效的,但是当我在我的类中进行如下验证时,它接受应该是无效的字符串。

@tag_regex = /([a-z]+){1}(,\s*[a-z]+)*/i

validates :tags, 
:allow_blank => true,
:format => { :with => @tag_regex, :message => "Invalid tag format." }

我不确定我的问题在于正则表达式还是验证方法本身。任何帮助表示赞赏。

【问题讨论】:

    标签: ruby-on-rails ruby regex validation format


    【解决方案1】:

    您忘记使用^(字符串开头)和$(字符串结尾)

    应该是这样的

    /^([a-z]+)(,\s*[a-z]+)*$/i
    

    如果没有^,$,它将匹配字符串之间的任何位置。使用^,$,您将使其匹配完全匹配

    【讨论】:

    • 是的,您不需要{1},因为它是默认值。
    • 完美!感谢您的超快速响应。当它让我在大约 7 分钟内时将标记为正确:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多