[:alnum:] is defined as

Alphanumeric characters: ‘[:alpha:]and [:digit:]’; in the ‘C’ locale and ASCII character encoding, this is the same as ‘[0-9A-Za-z]’. 

 

AND = need to satisfy BOTH alpha and digit

OR = need to satisfy EITHER alpha or digit

 

 

It looks like [:alpha:]AND [:digit:]’ functions as ‘[:alpha:]OR [:digit:]’, See example

 

 

Example:

# cat /tmp/c

adc

x1y1z123

456

 

# grep [[:alpha:]] /tmp/c

adc

x1y1z123

 

# grep [[:digit:]] /tmp/c

x1y1z123

456

 

# grep [[:alnum:]] /tmp/c

adc

x1y1z123

456

 

 

### if [:alnum] functions as [:alpha:]AND [:digit:], it should show x1y1z123 only