【问题标题】:how to check a string is valid in ruby? A valid string will be only including either character or digital number OR both如何检查字符串在 ruby​​ 中是否有效?有效的字符串将仅包含字符或数字数字或两者
【发布时间】:2015-05-09 18:49:44
【问题描述】:

如何检查字符串在 ruby​​ 中是否有效?有效的字符串将仅包含字符或数字或两者。这是我尝试过的:

str = "abc."
str[3].is_a? Numeric
str[3].is_a? String

“。”这里也是字符串(因为 ruby​​ 没有字符),但在我对有效字符串的定义中,“abc”。是无效的。 ruby 中有什么方法可以像 java 一样检查 isLetter 和 isDigital 吗?

【问题讨论】:

  • 你能澄清你的验证测试吗?为什么abc. 无效?

标签: ruby


【解决方案1】:

你在正确的轨道上。 您只需要使用正则表达式来确定接受/拒绝哪些字符。

这样的东西可以接受所有小写和大写字母字符。

str = 'abc.'
str[/([a-zA-Z]+)/]

之所以有效,是因为正则表达式 ([a-zA-Z]+) 匹配一组 (),其中包含一个或多个 + 字符与小写 a-z 或大写 A-Zcharacters。

您可以使用http://rubular.com/ 尝试不同的正则表达式。

【讨论】:

    【解决方案2】:

    正则表达式:(请注意,如果下划线是可接受的字符,则 /\W/ 可用)。

    def valid?(str)
      (str =~ /[^a-zA-Z0-9]/).nil?
    end
    
    p valid? "123"    # => true
    p valid? "123$"   # => false
    

    没有正则表达式:

    def valid?(str)
      str.count("a-zA-Z0-9") == str.size
    end
    
    p valid? "123"    # => true
    p valid? "123$"   # => false
    

    【讨论】:

      【解决方案3】:

      您在寻找正则表达式吗?

      >> 'abc.' =~ /[a-zA-Z]/
      => 0
      >> 'abc.' =~ /[0-9]/
      => nil
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-20
        • 1970-01-01
        • 1970-01-01
        • 2013-07-26
        • 1970-01-01
        • 2016-05-06
        • 1970-01-01
        • 2010-12-19
        相关资源
        最近更新 更多