Ruby:如何检查 UTF-8 字符串是否仅包含字母和数字?

发布于 2024-10-14 22:45:15 字数 171 浏览 6 评论 0原文

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

如何检查它是否不包含任何非字母数字字符?

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

示例:

  1. ėččę91 - 有效
  2. $120D - 无效

I have an UTF-8 string, which might be in any language.

How do I check, if it does not contain any non-alphanumeric characters?

I could not find such method in UnicodeUtils Ruby gem.

Examples:

  1. ėččę91 - valid
  2. $120D - invalid

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

两相知 2024-10-21 22:45:15

您可以使用字母数字的 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
$

You can use the POSIX notation for alpha-numerics:

#!/usr/bin/env ruby -w
# encoding: UTF-8

puts RUBY_VERSION

valid = "ėččę91"
invalid = "$120D"

puts valid[/[[:alnum:]]+/]
puts invalid[/[^[:alnum:]]+/]

Which outputs:

1.9.2
ėččę91
$
诺曦 2024-10-21 22:45:15

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

因此如果 s 代表您的字符串:

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

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

In ruby regex \p{L} means any letter (in any glyph)

so if s represents your string:

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

This will filter out non numbers and letters.

从﹋此江山别 2024-10-21 22:45:15

一个字母数字代码点的模式是

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

从那里很容易推断出这样的内容: for 有一个负数:

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

或这个 for 都是正数:

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

或有时这样,具体取决于:

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

选择最适合您需要的一个。

The pattern for one alphanumeric code point is

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

From there it’s easy to extrapolate something like this for has a negative:

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

or this for is all positive:

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

or sometimes this, depending:

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

Pick the one that best suits your needs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文