1

私はUTF-8文字列を持っていますが、これはどの言語でもかまいません。

英数字以外の文字が含まれていないかどうかを確認するにはどうすればよいですか?

UnicodeUtilsRubygemでそのようなメソッドを見つけることができませんでした。

例:

  1. ėččę91-有効
  2. $120D-無効
4

3 に答える 3

3

英数字には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
$
于 2011-01-31T23:46:57.010 に答える
1

ルビー正規表現では、\ p {L}は任意の文字(任意のグリフ)を意味します

したがって、sが文字列を表す場合:

 s.match /^[\p{L}\p{N}]+$/

これにより、数字以外の文字が除外されます。

于 2011-01-31T23:47:24.580 に答える
1

1つの英数字コードポイントのパターンは次のとおりです。

/[\p{Alphabetic}\p{Number}]/

そこから、次のようなものを簡単に推定できます。

/[^\p{Alphabetic}\p{Number}]/

またはこれはすべて肯定的です:

 /^[\p{Alphabetic}\p{Number}]+$/

または時々これ、依存します:

/\A[\p{Alphabetic}\p{Number}]+\z/

ニーズに最適なものを選択してください。

于 2011-02-01T00:19:54.943 に答える