这个问题本身是悖论。汉字在正则表达式中是占用一个字符的。
汉字的正则表达式为:
[\u4e00-\u9fa5]若汉字为一个正则字符,结果为:
[\w@!#$&%]{4,20}若汉字占2个字符位,以汉字开头的结果为:
[\da-zA-Z_@!#$&%]{4,20}|[\u4e00-\u9fa5]{1}[\da-zA-Z_@!#$&%]{2,18}|[\u4e00-\u9fa5]{2}[\da-zA-Z_@!#$&%]{0,16}|[\u4e00-\u9fa5]{3}[\da-zA-Z_@!#$&%]{0,14}|[\u4e00-\u9fa5]{4}[\da-zA-Z_@!#$&%]{0,12}|[\u4e00-\u9fa5]{5}[\da-zA-Z_@!#$&%]{0,10}|[\u4e00-\u9fa5]{6}[\da-zA-Z_@!#$&%]{0,8}|[\u4e00-\u9fa5]{7}[\da-zA-Z_@!#$&%]{0,6}|[\u4e00-\u9fa5]{8}[\da-zA-Z_@!#$&%]{0,4}|[\u4e00-\u9fa5]{9}[\da-zA-Z_@!#$&%]{2}|[\u4e00-\u9fa5]{10}若中间包含汉字,我是无能为力。只有计算机能弄出如此多的代码。
汉字是一个字符(char),两个字节(byte)。