# 验证方式

Matcher m= Pattern.compile("^[A-Za-z0-9\\-]+$").matcher("?1-23");
System.out.println(m.find(0));

String regx = "^[A-Za-z0-9\\-]+$";
System.out.println("123-$".matches(regx));

# 仅允许字母和-

"^[A-Za-z0-9\\-]+$"

# 仅包含英文字母、数字和汉字

/*
 * 判断字符串中是否仅包含字母数字和汉字
 * 各种字符的unicode编码的范围:
 * 汉字:[0x4e00,0x9fa5](或十进制[19968,40869])
 * 数字:[0x30,0x39](或十进制[48, 57])
 * 小写字母:[0x61,0x7a](或十进制[97, 122])
 * 大写字母:[0x41,0x5a](或十进制[65, 90])
 */

public static boolean isLetterDigitOrChinese(String str) {
  String regex = "^[a-z0-9A-Z\u4e00-\u9fa5]+$";
  return str.matches(regex);
 }