私はUTF-8文字列を持っていますが、これはどの言語でもかまいません。
英数字以外の文字が含まれていないかどうかを確認するにはどうすればよいですか?
UnicodeUtilsRubygemでそのようなメソッドを見つけることができませんでした。
例:
- ėččę91-有効
- $120D-無効
私はUTF-8文字列を持っていますが、これはどの言語でもかまいません。
英数字以外の文字が含まれていないかどうかを確認するにはどうすればよいですか?
UnicodeUtilsRubygemでそのようなメソッドを見つけることができませんでした。
例:
英数字にはPOSIX表記を使用できます。
#!/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
$
ルビー正規表現では、\ p {L}は任意の文字(任意のグリフ)を意味します
したがって、sが文字列を表す場合:
s.match /^[\p{L}\p{N}]+$/
これにより、数字以外の文字が除外されます。
1つの英数字コードポイントのパターンは次のとおりです。
/[\p{Alphabetic}\p{Number}]/
そこから、次のようなものを簡単に推定できます。
/[^\p{Alphabetic}\p{Number}]/
またはこれはすべて肯定的です:
/^[\p{Alphabetic}\p{Number}]+$/
または時々これ、依存します:
/\A[\p{Alphabetic}\p{Number}]+\z/
ニーズに最適なものを選択してください。