1

我有一个 UTF-8 字符串,它可能是任何语言。

如果它不包含任何非字母数字字符,我该如何检查?

我在 UnicodeUtils Ruby gem 中找不到这样的方法。

例子:

  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

在 ruby​​ 正则表达式 \p{L} 表示任何字母(在任何字形中)

所以如果 s 代表你的字符串:

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

这将过滤掉非数字和字母。

于 2011-01-31T23:47:24.580 回答
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 回答