我想检查foo
Ruby 中的变量是否为非空和字母数字。我知道我可以遍历每个字符并检查,但这是更好的方法吗?
问问题
5747 次
1 回答
17
使用 Unicode 或 POSIX 字符类
要验证字符串是否仅匹配字母数字文本,您可以使用锚定字符类。例如:
# Use the Unicode class.
'foo' =~ /\A\p{Alnum}+\z/
# Use the POSIX class.
'foo' =~ /\A[[:alnum:]]+\z/
锚定是必不可少的
锚定你的表达的重要性怎么强调都不为过。如果没有锚定,以下情况也是正确的:
"\nfoo" =~ /\p{Alnum}+/
"!foo!" =~ /\p{Alnum}+/
这不太可能是您所期望的。
于 2012-11-12T01:48:49.247 回答