Thanks, Polyphonic. Unicode normalisation explains the observed behaviour.
As for practical example of the issue. Website https://id.court.gov.ua/ that I do not own and has no access to code has following regexp for validating file name when user selects the file. It works on windows for files with й in name but not on macOS
const testFileName = /^[0-9A-Za-zА-Яа-яёїЁЇіІЄє\- /_/'/+/(/)/=/;/^/$/!.A-Za-z]+$/i;
In Java I would use CANON_EQ flag. But for JavaScript I don't know what would be a reliable solution