package com.jt.test2;
import java.util.regex.Pattern;
/**
* User: ldj
* Date: 2022/3/15
* Time: 10:09
* Description: 检验数字字符
*/
public class IsNumberDemo {
public static void main(String[] args) {
System.out.println("isNumber1:" + isNumber1("45425219215542415")); //true
System.out.println("isNumber2:" + isNumber1("45425219215542415")); //true
System.out.println("isNumber3:" + isNumber1("45425219#15542415")); //false
System.out.println("isNumber4:" + isNumber1("45425219#15542415")); //false
}
//方法1 正则表达式
private static final Pattern MATCH_PATTERN = Pattern.compile("-?\\d+(\\.\\d+)?");
public static boolean isNumber1(String str) {
return str != null && MATCH_PATTERN.matcher(str).matches();
}
//方法2 Stream流 (推荐)
public static boolean isNumber2(String str) {
return str != null && str.chars().allMatch(Character::isDigit);
}
//方法3 char码值匹配
public static boolean isNumber3(String str) {
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c < 48 || c > 57) {
return false;
}
}
return true;
}
//方法4 使用Long封装类的parse方法
public static boolean isNumber4(String str) {
try {
Long.parseLong(str);
return true;
} catch(Exception e){
return false;
}
}
}
后续补充:
^表示行的开头,^\d表示必须以数字开头
$表示行的结束,\d$表示必须以数字结束
\反斜杠 用来转义特殊字符
{n} 表示n个字符 如:\d{3}表示匹配3个数字,例如'010'
{n,m} 表示n-m个字符
\d 等同于[0-9],匹配一个数字
\w 等同于[0-9A-Z_a-z]可以匹配一个字母或数字
. 可以匹配任意字符
* 表示任意个字符(包括0个)
+ 表示至少一个字符
? 表示0个或1个字符