【问题标题】:Regex for validating options for select entered by users用于验证用户输入的选择的正则表达式
【发布时间】:2013-11-13 09:46:20
【问题描述】:

我正在开发一个 Rails 3 应用程序,其中包含多个表单,其中包括下拉选择。选择中显示的选项应可供应用程序管理员配置。

管理员可以在文本区域中输入选项。文本区域中的每一行都定义了要在选择中显示的内容。

A - Option 1
B - Option 2
C - Option 3

现在棘手的部分是验证管理员在选项中输入的内容。 每个选项行都应该遵循一定的模式,其中第一部分(连字符之前)是选项的关键,第二部分(连字符之后)是一些解释。

我目前正在使用以下正则表达式来验证每一行:

(.+) *- *(.+)

现在我想同时验证多行。 上面的例子应该是有效的,下面的例子应该是无效的:

示例 1:

A - Option 1
B - Option 2
C 

示例 2:

A - Option 1
B - Option 2
  - Option 3

我在正则表达式中添加了分隔符以匹配行(即: (^(.+) *- *(.+)$)+ ),但它没有按预期工作。

【问题讨论】:

  • 非常好且格式正确的问题 (+1)...

标签: ruby-on-rails regex validation


【解决方案1】:

使用/\A(^\w+ *- *\w.+\n)+\z/ 作为正则表达式。

def validate(options)
  options =~ /\A(^\w+ *- *\w.+\n)+\z/
end

例子:

validate(<<EOF)
A - Option 1
B - Option 2
C - Option 3
EOF
# => 0

validate(<<EOF)
A - Option 1
B - Option 2
C
EOF
# => nil

validate(<<EOF)
A - Option 1
B - Option 2
  - Option 3
EOF
# => nil

validate(<<EOF)
  - Option 1
B - Option 2
C - Option 3
EOF
# => nil

validate(<<EOF)
A -
B - Option 2
C - Option 3
EOF
# => nil

validate(<<EOF)
EOF
# => nil

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-26
    • 2013-12-12
    • 2014-12-23
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    相关资源
    最近更新 更多