我有一个UTF-8字符串,可能是任何语言。
如果它不包含任何非字母数字字符,我如何检查?
我在UnicodeUtils Ruby gem中找不到这样的方法。
示例:
答案 0 :(得分:3)
您可以将POSIX表示法用于alpha-numerics:
#!/usr/bin/env ruby -w
# encoding: UTF-8
puts RUBY_VERSION
valid = "ėččę91"
invalid = "$120D"
puts valid[/[[:alnum:]]+/]
puts invalid[/[^[:alnum:]]+/]
哪个输出:
1.9.2
ėččę91
$
答案 1 :(得分:1)
在ruby regex \ p {L}中表示任何字母(在任何字形中)
所以如果s代表你的字符串:
s.match /^[\p{L}\p{N}]+$/
这将过滤掉非数字和字母。
答案 2 :(得分:1)
一个字母数字代码点的模式是
/[\p{Alphabetic}\p{Number}]/
从那里可以很容易地推断出这样的东西,因为它具有负面效果:
/[^\p{Alphabetic}\p{Number}]/
或者这是积极的:
/^[\p{Alphabetic}\p{Number}]+$/
或有时这个,取决于:
/\A[\p{Alphabetic}\p{Number}]+\z/
选择最适合您需求的那个。