欢迎光临散文网 会员登陆 & 注册

Java和JS正则表达式代码,判断是否为空白字符,学习笔记PPT元字符,转义字符-诗书画唱

2020-09-25 00:12 作者:诗书画唱  | 我要投稿

编写一个java程序,输入一个字符串,进行如下的正则表达式验证:

1、输入的数字为5时,程序打印出true。

package Z;


import java.util.Scanner;

import java.util.regex.Pattern;


public class T1 {

public static void main(String[] args) {

System.out.println("请输入一个数字");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();

String old = "5";

//用Pattern.matches判断输入的字符串是否符合要求:

Boolean B = Pattern.matches(old, Scanner);

System.out.println(B);

}

}


2、输入的字符串是bo,boo,booo...打印出true。

package Z;

import java.util.Scanner;

import java.util.regex.Pattern;

public class T2 {

public static void main(String[] args) {


while(true){

System.out.println("请输入bo,boo,booo...之类的字符串");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();


//注释,下面的内容等是自己总结的相关知识(有助与记忆,理解等):

//^表示输入的字符串必须以什么开头。

//.可以替换任意的除了\n(换行符)以外的任意字符。

//*表示字符出现的次数是任意多次

String old = "^boo*";

//用Pattern.matches判断输入的字符串是否符合要求:

Boolean B = Pattern.matches(old, Scanner);

System.out.println(B);

}}}



3、输入的字符串是k,ko,koo,kooo...打印出true。


package Z;

import java.util.Scanner;

import java.util.regex.Pattern;

public class T3 {

public static void main(String[] args) {


while(true){

System.out.println("请输入k,ko,koo,kooo...之类的字符串");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();


//注释,下面的内容等是自己总结的相关知识(有助与记忆,理解等):

//^表示输入的字符串必须以什么开头。

//.可以替换任意的除了\n(换行符)以外的任意字符。

//*表示字符出现的次数是任意多次

String old = "^ko*";

//用Pattern.matches判断输入的字符串是否符合要求:

Boolean B = Pattern.matches(old, Scanner);

System.out.println(B);}}}




4、输入的字符串是p,po时打印出true

package Z;

import java.util.Scanner;

import java.util.regex.Pattern;

public class T4 {

public static void main(String[] args) {


while(true){

System.out.println("请输入p或po的字符串");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();


//注释,下面的内容等是自己总结的相关知识(有助与记忆,理解等):

//^表示输入的字符串必须以什么开头。

//?表示字符出现的次数是1或者0

String old = "^po?";

//用Pattern.matches判断输入的字符串是否符合要求:

Boolean B = Pattern.matches(old, Scanner);

System.out.println(B);}}}




5、输入的字符串以ba开头时,打印出true。例如:输入banana会打印true,但是输入unba会打印false。


package Z;

import java.util.Scanner;

import java.util.regex.Pattern;

public class T5 {

public static void main(String[] args) {

while(true){

System.out.println("请输入的字符串以ba开头时,打印出true。"

+ "\n例如:输入banana会打印true,"

+ "\n但是输入unba会打印false。");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();

//注释,下面的内容等是自己总结的相关知识(有助与记忆,理解等):

//^表示输入的字符串必须以什么开头。

//?表示字符出现的次数是1或者0

//.可以替换任意的除了\n(换行符)以外的任意字符

//*表示字符出现的次数是任意多次

String old = "^ba.*";

//用Pattern.matches判断输入的字符串是否符合要求:

Boolean B = Pattern.matches(old, Scanner);

System.out.println(B);}}}

自己的发现的规律和理解总结记录:



6、输入的字符串以er结尾时,打印出true。worker,erlly

package Z;

import java.util.Scanner;

import java.util.regex.Pattern;

public class T6 {public static void main(String[] args) {

while(true){

System.out.println("请输入的字符串以er结尾时,打印出true");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();

//注释,下面的内容等是自己总结的相关知识(有助与记忆,理解等):

//^表示输入的字符串必须以什么开头。

//?表示字符出现的次数是1或者0

//.可以替换任意的除了\n(换行符)以外的任意字符

//*表示字符出现的次数是任意多次

//$表示输入的字符串必须以什么结尾

String old = ".*er$";

//用Pattern.matches判断输入的字符串是否符合要求:

Boolean B = Pattern.matches(old, Scanner);

System.out.println(B);}}}


7、固定电话号码验证:0731-8xxxxxxx

区号必须是一个四位数字

区号和电话号码之间必须使用-连接

电话号码是一个8位数字

长沙的号码首位都是8开头

package Z;

import java.util.Scanner;

import java.util.regex.Pattern;

public class T7 {public static void main(String[] args) {

while(true){

System.out.println("请输入的字符串"

+ "固定电话号码验证是否为0731-8xxxxxxx类型。\n"

+ "区号必须是一个四位数字\n"

+ "区号和电话号码之间必须使用-连接\n"

+ "电话号码是一个8位数字\n"

+ "长沙的号码首位都是8开头");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();

//注释,下面的内容等是自己总结的相关知识(有助与记忆,理解等):

//^表示输入的字符串必须以什么开头。

//?表示字符出现的次数是1或者0。

//.可以替换任意的除了\n(换行符)以外的任意字符。

//*表示字符出现的次数是任意多次。

//$表示输入的字符串必须以什么结尾。

//\d表示匹配任意数字字符,相当于“[0-9]”。

//"{}"表示匹配前一个字符或子表达式n次。

//个人的理解:

//在字符串中表示\本身必须使用转移符号\,比如用\d等时要用成\\d

//“\\”表示被“\”这个转义字符转义后的“\”,代表是纯“\”

//而非字符串“\”。

String old = "^\\d{4}-{1}8\\d{7}";

//String old = "\\d{4}";

//用Pattern.matches判断输入的字符串是否符合要求:

Boolean B = Pattern.matches(old, Scanner);

System.out.println(B);

if(B==true){


System.out.println("符合xxxx-8xxxxxxx类型要求!");

}


else{

System.out.println("不符合xxxx-8xxxxxxx类型要求!");

}

}}}




8、手机号码验证:

首位必须是1,第二位只能是3,4,5,6,7,8,9,0,后面跟9位数字。

package Z;

import java.util.Scanner;

import java.util.regex.Pattern;

public class T8 {public static void main(String[] args) {

while(true){

System.out.println("请输入的字符串\n"

+ "首位必须是1,\n"

+ "第二位只能是3,4,5,6,7,8,9,0,\n"

+ "后面跟9位数字。");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();

//注释,下面的内容等是自己总结的相关知识(有助与记忆,理解等):

//^表示输入的字符串必须以什么开头。

//?表示字符出现的次数是1或者0。

//.可以替换任意的除了\n(换行符)以外的任意字符。

//*表示字符出现的次数是任意多次。

//$表示输入的字符串必须以什么结尾。

//\d表示匹配任意数字字符,相当于“[0-9]”。

//"{}"表示匹配前一个字符或子表达式n次。

//个人的理解:

//在字符串中表示\本身必须使用转移符号\,比如用\d等时要用成\\d

//“\\”表示被“\”这个转义字符转义后的“\”,代表是纯“\”

//而非字符串“\”。

//输入的字符串要么是com,要么是net,要么是top

//String reg4 = "(com|net|top)";

//个人的理解和总结:"|"表示"或者"

String old = "^1(0|[3-9])\\d{9}";

//String old = "\\d{4}";

//用Pattern.matches判断输入的字符串是否符合要求:

Boolean B = Pattern.matches(old, Scanner);

System.out.println(B);

if(B==true){


System.out.println("符合要求!");

}


else{

System.out.println("不符合要求!");

}

}}}

依次控制单一变量地验正自己写的正则表达式是否正确等:




9、输入的字符串是一个合法的变量名。

package Z;

import java.util.Scanner;

import java.util.regex.Pattern;

public class T9 {public static void main(String[] args) {

while(true){

System.out.println("请输入的字符串是一个合法的变量名");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();

//注释,下面的内容等是自己总结的相关知识(有助与记忆,理解等):

//^表示输入的字符串必须以什么开头。

//?表示字符出现的次数是1或者0。

//.可以替换任意的除了\n(换行符)以外的任意字符。

//*表示字符出现的次数是任意多次。

//$表示输入的字符串必须以什么结尾。

//\d表示匹配任意数字字符,相当于“[0-9]”。

//"{}"表示匹配前一个字符或子表达式n次。

//个人的理解:

//在字符串中表示\本身必须使用转移符号\,比如用\d等时要用成\\d

//“\\”表示被“\”这个转义字符转义后的“\”,代表是纯“\”

//而非字符串“\”。

//输入的字符串要么是com,要么是net,要么是top

//String reg4 = "(com|net|top)";

//个人的理解和总结:"|"表示"或者"。

//在JS中可以写成var reg=/^[a-zA-Z\$_][a-zA-Z\d_]*$/;

//但是Java中要用上"\"转义字符,而且不必用“/”括起来

//个人的理解:\\$用了两次的转义,第一次时第一个“\”把

//第二个“\”转义为纯的字符串“\”,

//之后纯的字符串“\”把$转义为纯的字符串“$”

String old = "^[a-z|A-Z|\\$|_][a-z|A-Z|\\d|_]*$";

//或简写成String old = "^[a-zA-Z\\$_][a-zA-Z\\d_]*$";

//具体直观和简写的写法我都尝试过,效果都一样。

//"|"表示"或者"

//String old = "\\d{4}";

//用Pattern.matches判断输入的字符串是否符合要求:

Boolean B = Pattern.matches(old, Scanner);

System.out.println(B);

if(B==true){


System.out.println("是一个合法的变量名!");

}


else{

System.out.println("不是一个合法的变量名!");

}

}}}



10、尝试写出邮箱验证的正则表达式。

要求一:必须包含一个@和.

要求二:@必须在.前面

要求三:@前面必须要有字母数字下划线

要求四:@和.之间需要有字母数字下划线

要求五:.后面必须跟上com或者net,cn

rr@163.com

package Z;

import java.util.Scanner;

import java.util.regex.Pattern;

public class T10 {public static void main(String[] args) {

while(true){

System.out.println("请输入的字符串是一个邮箱!\n"

+ "要求一:必须包含一个@和.\n"

+ "要求二:@必须在.前面\n"

+ "要求三:@前面必须要有字母数字下划线\n"

+ "要求四:@和.之间需要有字母数字下划线\n"

+ "要求五:.后面必须跟上com或者net,cn\n");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();

//注释,下面的内容等是自己总结的相关知识(有助与记忆,理解等):

//^表示输入的字符串必须以什么开头。

//?表示字符出现的次数是1或者0。

//.可以替换任意的除了\n(换行符)以外的任意字符。

//*表示字符出现的次数是任意多次。

//$表示输入的字符串必须以什么结尾。

//\d表示匹配任意数字字符,相当于“[0-9]”。

//"{n}"表示匹配前一个字符或子表达式n次。

//"{n,}"表示匹配前一个字符或子表达式n次以上。

//个人的理解:

//在字符串中表示\本身必须使用转移符号\,比如用\d等时要用成\\d

//“\\”表示被“\”这个转义字符转义后的“\”,代表是纯“\”

//而非字符串“\”。

//输入的字符串要么是com,要么是net,要么是top

//String reg4 = "(com|net|top)";

//个人的理解和总结:"|"表示"或者"。

//在JS中可以写成var reg=/^[a-zA-Z\$_][a-zA-Z\d_]*$/;

//但是Java中要用上"\"转义字符,而且不必用“/”括起来

//个人的理解:\\$用了两次的转义,第一次时第一个“\”把

//第二个“\”转义为纯的字符串“\”,

//之后纯的字符串“\”把$转义为纯的字符串“$”,\\.也同理

String old = "[a-zA-Z\\d_]{1,}@[a-zA-Z\\d_]{1,}"

+ "\\.*(com|net|cn)$";

//或简写成String old = "^[a-zA-Z\\$_][a-zA-Z\\d_]*$";

//具体直观和简写的写法我都尝试过,效果都一样。

//"|"表示"或者"。

//输入的字符串必须是5个以上的h

// String reg12 = "h{5,}";

//用Pattern.matches判断输入的字符串是否符合要求:

Boolean B = Pattern.matches(old, Scanner);

System.out.println(B);

if(B==true){


System.out.println("是一个邮箱!");

}


else{

System.out.println("不是一个邮箱!");

}

}}}



11、输入的是空白字符,例如空格\s,换行\n、制表符时\t,打印出true。(两种方法)

自己想出的方法一:


package Z;

import java.util.Scanner;

import java.util.regex.Pattern;

public class T11 {public static void main(String[] args) {

while(true){

System.out.println("请输入的字符串是空白字符,\n"

+ "例如空格\\s,换行\\n、\n"

+ "制表符时\\t,打印出true。\n"

+ "\\f——表示换页符\n"

+ "\\r——表示回车符\n"

+ "\\n——表示换行符\n"

+ "\\t——水平制表符\n"

+ "\\v——垂直制表符");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();

//注释,下面的内容等是自己总结的相关知识(有助与记忆,理解等):

//^表示输入的字符串必须以什么开头。

//?表示字符出现的次数是1或者0。

//.可以替换任意的除了\n(换行符)以外的任意字符。

//*表示字符出现的次数是任意多次。

//$表示输入的字符串必须以什么结尾。

//\d表示匹配任意数字字符,相当于“[0-9]”。

//"{n}"表示匹配前一个字符或子表达式n次。

//"{n,}"表示匹配前一个字符或子表达式n次以上。

//个人的理解:

//在字符串中表示\本身必须使用转移符号\,比如用\d等时要用成\\d

//“\\”表示被“\”这个转义字符转义后的“\”,代表是纯“\”

//而非字符串“\”。

//输入的字符串要么是com,要么是net,要么是top

//String reg4 = "(com|net|top)";

//个人的理解和总结:"|"表示"或者"。

//在JS中可以写成var reg=/^[a-zA-Z\$_][a-zA-Z\d_]*$/;

//但是Java中要用上"\"转义字符,而且不必用“/”括起来

//个人的理解:\\$用了两次的转义,第一次时第一个“\”把

//第二个“\”转义为纯的字符串“\”,

//之后纯的字符串“\”把$转义为纯的字符串“$”,\\.也同理

String old = "(\\\\s|\\\\n|\\\\t|\\\\f|\\\\v|\\\\r)";

//或简写成String old = "^[a-zA-Z\\$_][a-zA-Z\\d_]*$";

//具体直观和简写的写法我都尝试过,效果都一样。

//"|"表示"或者"。

//输入的字符串必须是5个以上的h

// String reg12 = "h{5,}";

//用Pattern.matches判断输入的字符串是否符合要求:

Boolean B = Pattern.matches(old, Scanner);

System.out.println(B);

if(B==true){


System.out.println("是空白字符!");

}


else{

System.out.println("不是空白字符!");

}

}}}



自己想出的方法二:

package Z;

import java.util.Scanner;

import java.util.regex.Pattern;

public class T11 {public static void main(String[] args) {

while(true){

System.out.println("请输入的字符串是空白字符,\n"

+ "例如空格\\s,换行\\n、\n"

+ "制表符时\\t,打印出true。\n"

+ "\\f——表示换页符\n"

+ "\\r——表示回车符\n"

+ "\\n——表示换行符\n"

+ "\\t——水平制表符\n"

+ "\\v——垂直制表符");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();

//注释,下面的内容等是自己总结的相关知识(有助与记忆,理解等):

//^表示输入的字符串必须以什么开头。

//?表示字符出现的次数是1或者0。

//.可以替换任意的除了\n(换行符)以外的任意字符。

//*表示字符出现的次数是任意多次。

//$表示输入的字符串必须以什么结尾。

//\d表示匹配任意数字字符,相当于“[0-9]”。

//"{n}"表示匹配前一个字符或子表达式n次。

//"{n,}"表示匹配前一个字符或子表达式n次以上。

//个人的理解:

//在字符串中表示\本身必须使用转移符号\,比如用\d等时要用成\\d

//“\\”表示被“\”这个转义字符转义后的“\”,代表是纯“\”

//而非字符串“\”。

//输入的字符串要么是com,要么是net,要么是top

//String reg4 = "(com|net|top)";

//个人的理解和总结:"|"表示"或者"。

//在JS中可以写成var reg=/^[a-zA-Z\$_][a-zA-Z\d_]*$/;

//但是Java中要用上"\"转义字符,而且不必用“/”括起来

//个人的理解:\\$用了两次的转义,第一次时第一个“\”把

//第二个“\”转义为纯的字符串“\”,

//之后纯的字符串“\”把$转义为纯的字符串“$”,\\.也同理


//方法一:

//String old = "(\\\\s|\\\\n|\\\\t|\\\\f|\\\\v|\\\\r)";

//方法二:

String old = "^\\\\[s|n|t|f|v|r]";

//方法三:

//String old = "\\\\[s|n|t|f|v|r]";

//或简写成String old = "^[a-zA-Z\\$_][a-zA-Z\\d_]*$";

//具体直观和简写的写法我都尝试过,效果都一样。

//"|"表示"或者"。

//输入的字符串必须是5个以上的h

// String reg12 = "h{5,}";

//用Pattern.matches判断输入的字符串是否符合要求:

Boolean B = Pattern.matches(old, Scanner);

System.out.println(B);

if(B==true){


System.out.println("是空白字符!");

}


else{

System.out.println("不是空白字符!");

}

}}}



12、输入的不是空白字符时,打印出true。

package Z;

import java.util.Scanner;

import java.util.regex.Pattern;

public class T12 {public static void main(String[] args) {

while(true){

System.out.println("请输入的字符串不是空白字符,\n"

+ "例如空格\\s,换行\\n、\n"

+ "制表符时\\t,打印出true。\n"

+ "\\f——表示换页符\n"

+ "\\r——表示回车符\n"

+ "\\n——表示换行符\n"

+ "\\t——水平制表符\n"

+ "\\v——垂直制表符");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();


String old = "\\\\[s|n|t|f|v|r]";


Boolean B = Pattern.matches(old, Scanner);

if(B==true){


B=false;}

else{B=true;}

System.out.println(B);


}}}

13、输入的字符串中包含连续的两个p时,打印出true。(apple,pplv,app)

package Z;

import java.util.Scanner;

import java.util.regex.Pattern;

public class T13 {public static void main(String[] args) {

while(true){

System.out.println("请输入的字符串中包含连续的两个p时,\n"

+ "打印出true。(apple,pplv,app)");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();


String old = ".{0,}p{2}.{0,}";


Boolean B = Pattern.matches(old, Scanner);


System.out.println(B);}}}


14、输入的字符串包含连续的五个或五个以上K时,打印出true。



package Z;

import java.util.Scanner;

import java.util.regex.Pattern;

public class T14 {public static void main(String[] args) {

while(true){

System.out.println("输入的字符串包含连续的\n"

+ "五个或五个以上K时,打印出true。");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();


String old = ".{0,}K{5,}.{0,}";

//用Pattern.matches判断输入的字符串是否符合要求:

Boolean B = Pattern.matches(old, Scanner);

System.out.println(B);}}}




正则表达式PPT:

1
2
3
4
5
6
7
8

老师写的代码和笔记等:


package Z;


import java.util.regex.Pattern;



public class Z {


public static void main(String[] args) {

// TODO Auto-generated method stub

//输入一个字符串,a或者""

//String inp = "www.com";

//正则表达式

//?表示字符出现的次数是1或者0

//*表示字符出现的次数是任意多次

//+表示字符出现的次数是1或者多次

//String reg1 = "a+";

//判断输入的字符串是否符合要求

//Boolean r1 = Pattern.matches(reg1, inp);

//System.out.println(r1);


//^表示输入的字符串必须以什么开头

//.可以替换任意的除了\n(换行符)以外的任意字符

//String reg2 = "^pub.*";

//Boolean r2 = Pattern.matches(reg2, inp);

//System.out.println(r2);


//$表示输入的字符串必须以什么结尾

//String reg3 = ".*com$";

//Boolean r3 = Pattern.matches(reg3, inp);

//System.out.println(r3);


//输入的字符串要么是com,要么是net,要么是top

//String reg4 = "(com|net|top)";

//Boolean r4 = Pattern.matches(reg4, inp);

//System.out.println(r4);


//输入的字符串必须以www开头,必须以com或者net结尾,

//中间可以是任意多个字符

//String reg5 = "^www.*(com|net)$";

//Boolean r5 = Pattern.matches(reg5, inp);

//System.out.println(r5);


//输入的字符串必须全部是字母

//String reg6 = "[a-zA-Z]+";

//Boolean r6 = Pattern.matches(reg6, "Apple");

//System.out.println(r6);

//输入的字符串必须全部是数字

//String reg7 = "[0-9]+";

//也可以使用元字符来表示

//在字符串中表示\本身必须使用转移符号\

// String reg7 = "\\d+";

// Boolean r7 = Pattern.matches(reg7, "419.1");

// System.out.println(r7);

//输入的字符串必须是数字字母

//String reg8 = "[0-9a-zA-Z]";


//\w表示数字字母下划线

//变量名必须以数字,字母,下划线中的组成,不能以数字开头

//String reg9 = "^[a-zA-Z_]\\w*";

//Boolean r9 = Pattern.matches(reg9, "_user");

//System.out.println(r9);


//输入的字符串必须是四个连续的a

//String reg10 = "a{4}";

//Boolean r10 = Pattern.matches(reg10, "aaaa");

//System.out.println(r10);

//输入的字符串必须是3到7个c

//String reg11 = "c{3,7}";

//Boolean r11 = Pattern.matches(reg11, "cccc");

//System.out.println(r11);


//输入的字符串必须是5个以上的h

String reg12 = "h{5,}";


//输入的必须是一个手机号码,必须以1开头,是11位数字

String reg13 = "^1\\d{10}";


//输入的字符串必须是一个0.xx的两位小数

String reg14 = "^0\\.\\d{2}";

Boolean r14 = Pattern.matches(reg14, "0.31");

System.out.println(r14);


//输入的字符串必须以除了a以外的任何字符开头

String reg15 = "^[^a][a-z]*";

}


}





学习笔记:

正则表达式

JS和JAVA等多种语言中都可以使用正则表达式,而且语法规则都一样。



正则表达式中的特殊字符:

?:表示出现的次数是1或者0

+:出现的次数不能为0

*:可以出现任意多次

^:以什么开头

$:以什么结尾

.:表示换行符\n以外的任何字符



正则表达式中的元字符:

所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,其使得正则表达式具有强大的文字处理能力。



基本元字符:

  • "." ——表示匹配除换行符和回车符外的任意单个字符

  • "|" ——表示逻辑“或”

  • "[]" ——表示匹配字符集合中的一个字符

  • "[^]"——表示匹配不在字符集合中的一个字符,即对集合取非

  • "-"——表示定义一个区间,如a-z即代表小写字母a-z

  • "()"——表示生成子表达式

  • "\"——表示对下一个字符进行转义,转义即理解为取消其特殊含义

特殊元字符

  • \d——匹配任意数字字符,相当于“[0-9]”

  • \D——“\d”的反义,匹配任意非数字字符,相当于“[^0-9]”

  • \w——匹配任一字母、数字、下划线,在 Unicode 编码中也可匹配汉字、俄文等字符

  • \W——“\w”的反义,包括空白字符、标点等

  • \s——匹配一个空白字符,包括空格、水平制表符、换行符、回车符等

  • \S——“\s”的反义,匹配任意非空白字符

数量元字符

  • "*"——匹配前一个字符或子表达式任意次重复,可以匹配零次

  • "+"——匹配前一个字符或子表达式一次或多次重复,与"*"的唯一区别在于不能匹配零次

  • "?"——匹配前一个字符或子表达式零次或一次

  • "{}"——匹配前一个字符或子表达式n次

  • "{m,n}"——匹配前一个字符或子表达式至少m次至多n次

  • "{n,}"——匹配前一个字符n次或更多次

空白元字符

  • \f——表示换页符

  • \r——表示回车符

  • \n——表示换行符

  • \t——水平制表符

  • \v——垂直制表符

好文链接:


http://mp.weixin.qq.com/s?__biz=MzIyOTU3NjM3NA==&mid=2247483950&idx=1&sn=82d0c853405386ce8930cfdec2a1c3c3&chksm=e841d9f7df3650e1acfb71639c22701d3c2a860f818d0310907aa618b97b7b6ef85ea6879bc8&scene=21#wechat_redirect




https://www.runoob.com/regexp/regexp-metachar.html





正则表达式大全:

字符 描述 

\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n”匹配字符“n”。“\n”匹配一个换行符。序列“\\”匹配“\”而“\(”则匹配“(”。 

^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。 

$ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。 

* 匹配前面的子表达式零次或多次。例如,zo*能匹配“z”以及“zoo”。*等价于{0,}。 

+ 匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。 

? 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”中的“do”。?等价于{0,1}。 

{n} n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。 

{n,} n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。 

{n,m} m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。 

? 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。 

. 匹配除“\n”之外的任何单个字符。要匹配包括“\n”在内的任何字符,请使用像“[.\n]”的模式。 

(pattern) 匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用“\(”或“\)”。 

(?:pattern) 匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。 

(?=pattern) 正向预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。 

(?!pattern) 负向预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始 

x|y 匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”。 

[xyz] 字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。 

[^xyz] 负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“p”。 

[a-z] 字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。 

[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。 

\b 匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。 

\B 匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。 

\cx 匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符。 

\d 匹配一个数字字符。等价于[0-9]。 

\D 匹配一个非数字字符。等价于[^0-9]。 

\f 匹配一个换页符。等价于\x0c和\cL。 

\n 匹配一个换行符。等价于\x0a和\cJ。 

\r 匹配一个回车符。等价于\x0d和\cM。 

\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[\f\n\r\t\v]。 

\S 匹配任何非空白字符。等价于[^\f\n\r\t\v]。 

\t 匹配一个制表符。等价于\x09和\cI。 

\v 匹配一个垂直制表符。等价于\x0b和\cK。 

\w 匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”。 

\W 匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。 

\xn 匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,“\x41”匹配“A”。“\x041”则等价于“\x04&1”。正则表达式中可以使用ASCII编码。. 

\num 匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)\1”匹配两个连续的相同字符。 

\n 标识一个八进制转义值或一个向后引用。如果\n之前至少n个获取的子表达式,则n为向后引用。否则,如果n为八进制数字(0-7),则n为一个八进制转义值。 

\nm 标识一个八进制转义值或一个向后引用。如果\nm之前至少有nm个获得子表达式,则nm为向后引用。如果\nm之前至少有n个获取,则n为一个后跟文字m的向后引用。如果前面的条件都不满足,若n和m均为八进制数字(0-7),则\nm将匹配八进制转义值nm。 

\nml 如果n为八进制数字(0-3),且m和l均为八进制数字(0-7),则匹配八进制转义值nml。 

\un 匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。例如,\u00A9匹配版权符号(©)。


Java和JS正则表达式代码,判断是否为空白字符,学习笔记PPT元字符,转义字符-诗书画唱的评论 (共 条)

分享到微博请遵守国家法律