正则表达式
正则表达式使用来对字符串进行验证,在很多时候我们需要指定的字符串格式或者内容,但是客户输入可能不一样,此时可以使用正则表达式对用户输入的数据进行简单的验证。
DEMO:去除字符串中的非数字类型的字符
package com.sun;
public class Test {
public static void main(String[] args){
String str="asdfsd8f7ds8g68d7sfg567dfs67dsf67g65sdf67gsdf87665g78sfd675gs6df57";
StringBuffer sb=new StringBuffer();
for(int i=0;i<str.length();i++) {
char c=str.charAt(i);
if((int)c>=48&&(int)c<=57) {
sb.append(c);
}
}
System.out.println(sb);
}
}
以上使用的是字符串的方法结合循环实现字符的过滤操作,那么如果使用正则只需要一行代码。
DEMO:使用正则实现
ackage com.sun;
public class Test {
public static void main(String[] args){
String str="asdfsd8f7ds8g68d7sfg567dfs67dsf67g65sdf67gsdf87665g78sfd675gs6df57";
System.out.println(str.replaceAll("\\D",""));
}
}
"\D":表示非数字的字符,
DEMO:正则[abc]
匹配abc中的任意一个字符
package com.sun;
public class Test {
public static void main(String[] args){
String str="ab";
String regex="[abc]";
//如果匹配成功返回true 否则就是返回false
System.out.println(str.matches(regex));
}
}
false
DEMO:【^abc】
匹配出abc外的任意一个字符
package com.sun;
public class Test {
public static void main(String[] args){
String str="d";
String regex="[^abc]";
//如果匹配成功返回true 否则就是返回false
System.out.println(str.matches(regex));
}
}
true
DEMO:[a-z]
匹配a~z中的任意一位字符
package com.sun;
public class Test {
public static void main(String[] args){
String str="d";
String regex="[a-z]";
//如果匹配成功返回true 否则就是返回false
System.out.println(str.matches(regex));
}
}
true
DEMO:[a-zA-Z]
匹配从az或者AZ中的任意一位字符
package com.sun;
public class Test {
public static void main(String[] args){
String str="H";
String regex="[a-zA-Z]";
//如果匹配成功返回true 否则就是返回false
System.out.println(str.matches(regex));
}
}
true
DEMO:[0-9]
匹配0~9之间的任意一位数字
package com.sun;
public class Test {
public static void main(String[] args){
String str="9";
String regex="[0-9]";
//如果匹配成功返回true 否则就是返回false
System.out.println(str.matches(regex));
}
}
true
DEMO:\d
是匹配[0~9]的正则的简写
package com.sun;
public class Test {
public static void main(String[] args){
String str="9";
String regex="\\d";
//如果匹配成功返回true 否则就是返回false
System.out.println(str.matches(regex));
}
}
true
DEMO:\D
匹配任意一位非数字字符
package com.sun;
public class Test {
public static void main(String[] args){
String str="S";
String regex="\\D";
//如果匹配成功返回true 否则就是返回false
System.out.println(str.matches(regex));
}
}
true
DEMO: \s
匹配一位空格字符
ackage com.sun;
public class Test {
public static void main(String[] args){
String str=" ";
String regex="\\s";
//如果匹配成功返回true 否则就是返回false
System.out.println(str.matches(regex));
}
}
true
DEMO:\S
匹配一位非空字符
package com.sun;
public class Test {
public static void main(String[] args){
String str="你";
String regex="\\S";
//如果匹配成功返回true 否则就是返回false
System.out.println(str.matches(regex));
}
}
true
DEMO:\w
匹配任意一位数字、字母、下划线
package com.sun;
public class Test {
public static void main(String[] args){
String str="s";
String regex="\\w";
//如果匹配成功返回true 否则就是返回false
System.out.println(str.matches(regex));
}
}
true
DEMO:\W
匹配除了数字、字母、下划线之外的任意一位字符
package com.sun;
public class Test {
public static void main(String[] args){
String str="+";
String regex="\\W";
//如果匹配成功返回true 否则就是返回false
System.out.println(str.matches(regex));
}
}
true
以上的正则只能匹配一位字符,下面的正则可以匹配多位字符。
DEMO:\d?
匹配数字,但是可以匹配0位或者1位
package com.sun;
public class Test {
public static void main(String[] args){
String str="9";
String regex="\\d?";
//如果匹配成功返回true 否则就是返回false
System.out.println(str.matches(regex));
}
}
true
DEMO:正则+
匹配正则至少一次
package com.sun;
public class Test {
public static void main(String[] args){
String str="9897987987798789987";
String regex="\\d+";
//如果匹配成功返回true 否则就是返回false
System.out.println(str.matches(regex));
}
}
true
\d+ :可以匹配至少一位数字类型的字符。
DEMO:正则
匹配正则任意次数*
package com.sun;
public class Test {
public static void main(String[] args){
String str="";
String regex="\\d*";
//如果匹配成功返回true 否则就是返回false
System.out.println(str.matches(regex));
}
}
true
DEMO:正则{n}
匹配正则n次
package com.sun;
public class Test {
public static void main(String[] args){
String str="a0_";
//可以匹配三个字母、数字、下划线
String regex="\\w{3}";
//如果匹配成功返回true 否则就是返回false
System.out.println(str.matches(regex));
}
}
true
DEMO:正则{n,}
匹配正则至少n次。
package com.sun;
public class Test {
public static void main(String[] args){
String str="a0_sssss";
//可以匹配三个字母、数字、下划线
String regex="\\w{3,}";
//如果匹配成功返回true 否则就是返回false
System.out.println(str.matches(regex));
}
}
true
DEMO:正则{n,m}
匹配正则n~m次
package com.sun;
public class Test {
public static void main(String[] args){
String str="a0_ss";
//可以匹配三个字母、数字、下划线
String regex="\\w{3,5}";
//如果匹配成功返回true 否则就是返回false
System.out.println(str.matches(regex));
}
}
true
DEMO:正则1正则2正则3
同时满足三个正则
ackage com.sun;
public class Test {
public static void main(String[] args){
String str="sadf234 ";
String regex="\\w{3,5}\\d*\\s{2}";
//如果匹配成功返回true 否则就是返回false
System.out.println(str.matches(regex));
}
}
true
出现多个正则的时候不但要满足正则还需要顺序和正则表达式保持一致
DEMO:正则1|正则2
满足两个正则中其中一个正则即可
package com.sun;
public class Test {
public static void main(String[] args){
String str="xxss";
String regex="\\w{3,5}|\\d*|\\s{2}";
//如果匹配成功返回true 否则就是返回false
System.out.println(str.matches(regex));
}
}
true
DEMO:(正则)
将多个正则视为一组
package com.sun;
public class Test {
public static void main(String[] args){
String str="assd43545dfhgftgh6";
String regex="(\\w{3,5}\\d*\\w*\\d{1})|\\s{2}";
//如果匹配成功返回true 否则就是返回false
System.out.println(str.matches(regex));
}
}
true