提问人:spd 提问时间:8/11/2023 最后编辑:jaco0646spd 更新时间:8/11/2023 访问量:95
我想检查 name 是否包含 Ruby 中的任何特殊字符或数字
I want to check whether name contains any special character or number in Ruby
问:
这是代码 -
def username_chk(str)
if str.length <=20
if str=~/^[a-zA-Z\\s]+$/
puts "Invalid User name"
else
puts str
end
else puts"User name can contain Max 20 character"
end
end
username_chk("Mark ju09")
它不起作用。我也试过:
str=~/[a-zA-Z]+\\.?/
str=~/^[a-zA-Z\s]+$/ 此表达式在 java 中使用 Pattern 工作正常
答:
-1赞
Gautam
8/11/2023
#1
您可以使用以下正则表达式来验证字符串是否至少包含一个特殊字符或至少一个数字。
str.match?(/[^a-zA-Z0-9]|\d/)
2赞
Tom Lord
8/11/2023
#2
您不需要在 ruby 正则表达式中对字符进行双重转义。 表示“空白字符”; 表示“反斜杠,然后是”(表示反斜杠或)。
\s
\\s
s
[\\s]
s
=~
是“匹配”运算符。 检查字符串匹配的内容,而不是不匹配的内容。str=~/^[a-zA-Z\\s]+$/
总之,有几种方法可以写这个,但这里有几种:
# pick one of the `if` statements below...
if str =~ /^[a-zA-Z\s]+$/
if str =~ /^[a-z\s]+$/i
puts str # (valid user name)
end
# Or, pick one of these:
# (Note that !~ means "doesn't match"; the opposite of =~)
if str !~ /^[a-zA-Z\s]+$/
if str !~ /^[a-z\s]+$/i
if str =~ /[^a-zA-Z\s]/
if str =~ /[^a-z\s]/i
puts "Invalid User name"
end
查看文档:此处和此处
-1赞
TheTurTel500
8/11/2023
#3
在正则表达式中,无需转义反斜杠 ()。因此,/^[a-zA-Z\s]+$/ 变为 /^[a-zA-Z\s]+$/。 还有“无效用户名”的顺序,并在用户名有效时放置 str 行以显示用户名。
def username_chk(str)
if str.length <= 20
if str =~ /^[a-zA-Z\s]+$/
puts str
else
puts "Invalid User name"
end
else
puts "User name can contain Max 20 characters"
end
end
username_chk("Mark ju09")
评论
\\s
/^[a-zA-Z\s]+$/
\s
/[^a-zA-Z\s]/
^
+
$