【问题标题】:Rails - Alphanumeric field validationRails - 字母数字字段验证
【发布时间】:2016-11-24 12:22:17
【问题描述】:

在 rails 4 中,我需要验证字母数字字段,该字段只能接受点 (.)、连字符 (-)、斜杠 (/) 和字符之间的空格。

例如:AB123-GH345AB45.NH744KHJ3/SD34HJS23 JKA34

我已尝试使用 /^[0-9]+#$//^\d+([.,]\d+)?$//^[0-9]+#$/,但它没有按照要求工作。

应该按照示例接受值。请帮我验证这个字段。

【问题讨论】:

  • 您尝试的正则表达式中的# 是什么意思?该字符在正则表达式中没有任何特殊含义。你真的没有给我们足够的信息。以下值是否有效? 0A..- /A/0-NH744123AB-345GHAB123.GH345.LM567

标签: ruby-on-rails ruby regex validation


【解决方案1】:

试试这个正则表达式

^[a-zA-Z0-9\. /'\-]+$

希望这会有所帮助

【讨论】:

    【解决方案2】:
    • 试试这个:

      /^[a-zA-Z\d\.\-\/# ]+$/
      

    【讨论】:

    • 使用这个后,我得到一个类似ArgumentError (The provided regular expression is using multiline anchors (^ or $)的错误
    • 您可以set the :multiline option to true 启用这些^/$ 锚点,但我怀疑您是否真的需要它们。
    【解决方案3】:

    我认为这可能会对您有所帮助:

    /^[A-Za-z0-9-\/\.\s]+$/
    

    这适用于您提供的所有示例

    AB123-GH345AB45.NH744KHJ3/SD34HJS23 JKA34

    当我在中间插入一个像? 这样的字符时被拒绝(HJS23?JKA34)。


    更新

    如果你不想要多行锚,那么你可以像这样使用它:

    /\A[A-Za-z0-9-\/\.\s]+\z/
    

    您可以使用此Rubular 网站来验证您的正则表达式代码。

    【讨论】:

    • 谢谢。 /\A[A-Za-z0-9-\/\.\s]+\z/ 工作正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 2012-07-16
    • 1970-01-01
    • 2016-02-02
    相关资源
    最近更新 更多