Ruby 字符串必须是字母数字验证

Ruby 字符串必须是字母数字验证,ruby,regex,Ruby,Regex,字符串必须同时包含字母和数字 我尝试了下面的正则表达式,但它允许我添加特殊字符,我不希望字符串中有任何特殊字符 /^(?=.*[a-z])(?=.*[0-9])/ 下面是我的案例 无效 试验 试验 0123 T12^ 有效 T123 123T t123 123t 任何帮助或建议都将不胜感激,提前感谢:)您可以使用2个肯定的(?=来声明至少有一个字符和一个数字: 或使用不区分大小写的标志和\d匹配数字: 您似乎想检查字符串是否仅包含字母和数字,以及是否至少包含一个字母和一个数字 您可以

字符串必须同时包含字母和数字

我尝试了下面的正则表达式,但它允许我添加特殊字符,我不希望字符串中有任何特殊字符

/^(?=.*[a-z])(?=.*[0-9])/
下面是我的案例

无效

  • 试验
  • 试验
  • 0123
  • T12^
有效

  • T123
  • 123T
  • t123
  • 123t
任何帮助或建议都将不胜感激,提前感谢:)

您可以使用2个肯定的
(?=
来声明至少有一个字符和一个数字:

或使用不区分大小写的标志和
\d
匹配数字:


您似乎想检查字符串是否仅包含字母和数字,以及是否至少包含一个字母和一个数字

您可以使用我在自由间距模式下编写的以下正则表达式来实现自文档化

r = /
    \A                   # match beginning of string
    \p{Alnum}*           # match zero or more letters or numbers
    (?:                  # begin non-capture group
      \p{Alpha}\p{Digit} # match a letter followed by a digit
      |                  # or
      \p{Digit}\p{Alpha} # match a digit followed by a letter
    )                    # end non-capture group
    \p{Alnum}*           # match zero or more letters or numbers
    \z                   # match end of string
    /x                   # free spacing regex definition mode

%w| test TEST 0123 T12^ T123 123T t123 123t |.each { |s| puts "#{s}: #{s.match?(r)}" }
test: false
TEST: false
0123: false
T12^: false
T123: true
123T: true
t123: true
123t: true

我从您的标记中看到您正在使用Rails。内置数字验证程序有什么问题?我想要字母数字值,而不仅仅是数字值,字符串必须同时包含字母和数字。您的条件不清楚。“字符串是否包含字母数字”与“字符串是否包含字母数字以外的任何内容”。/^[A-Za-z][A-Za-z\d]*$/试试这个。你可以在这里玩正则表达式@NarasimhaReddy它不是重复的,检查它,我需要检查字符串必须包含字母数字,如果字符串只包含字母,你的正则表达式将允许。在我的情况下,字符串必须同时包含字母和数字仅供参考:上述操作在
“A1\n#@&(
^=“
。除非您非常清楚自己在做什么,否则请始终使用
\A`和
\z
匹配器,而不是
^
$
。@mudasobwa当我使用此正则表达式时
\A(?=[A-zA-Z0-9]*[A-zA-z])(?=[A-zA-Z0-9]*\d)[A-zA-Z0-9]\Z
它不允许我使用这个
TTTADA41ADADADA
简单的字母数字。你能帮我解决这个问题吗?好的开始是停止盲目复制代码并开始阅读。后面的
*
很重要,否则它只匹配单个字符串。