Looking at the source, it's simply strcoll(). Jan
Index: bin/expr/expr.1 =================================================================== RCS file: /cvs/src/bin/expr/expr.1,v retrieving revision 1.24 diff -u -p -r1.24 expr.1 --- bin/expr/expr.1 16 Aug 2017 20:10:58 -0000 1.24 +++ bin/expr/expr.1 1 Feb 2022 22:53:12 -0000 @@ -39,9 +39,10 @@ Returns the evaluation of if neither expression evaluates to an empty string or zero; otherwise, returns zero. .It Ar expr1 Li "{=, >, >=, <, <=, !=}" Ar expr2 -Returns the results of integer comparison if both arguments are -decimal integers; otherwise, returns the results of string comparison -using the locale-specific collation sequence. +Returns the results of integer comparison +if both arguments are decimal integers; +otherwise, returns the results of string comparison using +.Xr strcoll 3 . The result of each comparison is 1 if the specified relation is true, or 0 if the relation is false. .It Ar expr1 Li "{+, -}" Ar expr2