AdiletAbylov

AdiletAbylov

Regex.match?( ~r/^[[:ascii:]]+$/u, "ü") returns true

But in Regex docs:

ascii - Character codes 0-127

And ü codepoint is 252

Showing Posts 1 to 10

kip

kip

ex_cldr Core Team

That is definitely surprising. The use of the u flag does change the meaning of some POSIX character classes but there’s no mention of [:ascii:] changing in those circumstances as you noted.

In my unicode_set library I build the regex in the way you expect - just in case that lib helps you in some way.

iex> regex = Unicode.Regex.compile! "[[:ascii:]]"
~r/[\x{0}-\x{7F}]/u
iex> Unicode.Regex.match? regex, "ü"             
false
LostKobrakai

LostKobrakai

I also tried it without the u flag and got the same result.

iex(1)> Regex.match?( ~r/^[[:ascii:]]+$/, "ü")
true
kip

kip

ex_cldr Core Team

Yes, which is even more weird since in non-unicode mode the comparison is meant to be byte-wise. Since << 195, 188 >> = "ü", neither of which is 0 < ascii < 128.

AdiletAbylov

AdiletAbylov OP

I believe :ascii: works for extended ASCII table which is 0-255. So something is wrong in docs.

NobbZ

NobbZ

Probably something inherited from the erlang regex implementation:

nix shell nixpkgs#erlang -c erl
Erlang/OTP 22 [erts-10.7] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [hipe]

Eshell V10.7  (abort with ^G)
1> re:run(<<"ü">>, "[[:ascii:]]").
{match,[{0,1}]}
2> re:run(<<"ü"/utf8>>, "[[:ascii:]]").
{match,[{0,1}]}
3> re:run("ü", "[[:ascii:]]").         
{match,[{0,1}]}
Sebb

Sebb

looking at the docs I would not expect this:

EDIT:

iex(1)> match_char = fn c -> Regex.match?( ~r/^[[:ascii:]]+$/u, List.to_string([c])) end
#Function<44.79398840/1 in :erl_eval.expr/5>
iex(2)> length(for c <- 0..255, match_char.(c), do: c)                                  
256
hauleth

hauleth

Well, Regex is just wrapper over re, so this is pretty obvious.

@AdiletAbylov I would check whether it isn’t bug in PCRE which is used by Erlang (with few patches).

kip

kip

ex_cldr Core Team

I tried this in several online regex checkers, each of which claims to use PCRE. And none of them return the same result as :re. So seems to be either a bug or a doc error.
.

kip

kip

ex_cldr Core Team
eksperimental

eksperimental

It is definitely a bug in the character class.

The character is: 𑩄 U+11A44 ZANABAZAR SQUARE MARK LONG TSHEG

iex> Regex.match?( ~r/^[[:ascii:]]+$/, <<72260::utf8>>)   
true

The challenge is to find a character that will return false :wink:

Where Next? Top

Trending in Questions Top

RSP87
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
nseaSeb
Hello, I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
apz
I’m new to elixir and just tried to install the elixirLS extension for VScode(ium) and it is throwing some errors that I would like help ...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews