最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Java和JS正則表達(dá)式代碼,判斷是否為空白字符,學(xué)習(xí)筆記PPT元字符,轉(zhuǎn)義字符-詩(shī)書畫唱

2020-09-25 00:12 作者:詩(shī)書畫唱  | 我要投稿

編寫一個(gè)java程序,輸入一個(gè)字符串,進(jìn)行如下的正則表達(dá)式驗(yàn)證:

1、輸入的數(shù)字為5時(shí),程序打印出true。

package Z;


import java.util.Scanner;

import java.util.regex.Pattern;


public class T1 {

public static void main(String[] args) {

System.out.println("請(qǐng)輸入一個(gè)數(shù)字");

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("請(qǐng)輸入bo,boo,booo...之類的字符串");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();


//注釋,下面的內(nèi)容等是自己總結(jié)的相關(guān)知識(shí)(有助與記憶,理解等):

//^表示輸入的字符串必須以什么開頭。

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

//*表示字符出現(xiàn)的次數(shù)是任意多次

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("請(qǐng)輸入k,ko,koo,kooo...之類的字符串");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();


//注釋,下面的內(nèi)容等是自己總結(jié)的相關(guān)知識(shí)(有助與記憶,理解等):

//^表示輸入的字符串必須以什么開頭。

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

//*表示字符出現(xiàn)的次數(shù)是任意多次

String old = "^ko*";

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

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

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




4、輸入的字符串是p,po時(shí)打印出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("請(qǐng)輸入p或po的字符串");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();


//注釋,下面的內(nèi)容等是自己總結(jié)的相關(guān)知識(shí)(有助與記憶,理解等):

//^表示輸入的字符串必須以什么開頭。

//?表示字符出現(xiàn)的次數(shù)是1或者0

String old = "^po?";

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

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

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




5、輸入的字符串以ba開頭時(shí),打印出true。例如:輸入banana會(huì)打印true,但是輸入unba會(huì)打印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("請(qǐng)輸入的字符串以ba開頭時(shí),打印出true。"

+ "\n例如:輸入banana會(huì)打印true,"

+ "\n但是輸入unba會(huì)打印false。");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();

//注釋,下面的內(nèi)容等是自己總結(jié)的相關(guān)知識(shí)(有助與記憶,理解等):

//^表示輸入的字符串必須以什么開頭。

//?表示字符出現(xiàn)的次數(shù)是1或者0

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

//*表示字符出現(xiàn)的次數(shù)是任意多次

String old = "^ba.*";

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

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

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

自己的發(fā)現(xiàn)的規(guī)律和理解總結(jié)記錄:



6、輸入的字符串以er結(jié)尾時(shí),打印出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("請(qǐng)輸入的字符串以er結(jié)尾時(shí),打印出true");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();

//注釋,下面的內(nèi)容等是自己總結(jié)的相關(guān)知識(shí)(有助與記憶,理解等):

//^表示輸入的字符串必須以什么開頭。

//?表示字符出現(xiàn)的次數(shù)是1或者0

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

//*表示字符出現(xiàn)的次數(shù)是任意多次

//$表示輸入的字符串必須以什么結(jié)尾

String old = ".*er$";

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

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

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


7、固定電話號(hào)碼驗(yàn)證:0731-8xxxxxxx

區(qū)號(hào)必須是一個(gè)四位數(shù)字

區(qū)號(hào)和電話號(hào)碼之間必須使用-連接

電話號(hào)碼是一個(gè)8位數(shù)字

長(zhǎng)沙的號(hào)碼首位都是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("請(qǐng)輸入的字符串"

+ "固定電話號(hào)碼驗(yàn)證是否為0731-8xxxxxxx類型。\n"

+ "區(qū)號(hào)必須是一個(gè)四位數(shù)字\n"

+ "區(qū)號(hào)和電話號(hào)碼之間必須使用-連接\n"

+ "電話號(hào)碼是一個(gè)8位數(shù)字\n"

+ "長(zhǎng)沙的號(hào)碼首位都是8開頭");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();

//注釋,下面的內(nèi)容等是自己總結(jié)的相關(guān)知識(shí)(有助與記憶,理解等):

//^表示輸入的字符串必須以什么開頭。

//?表示字符出現(xiàn)的次數(shù)是1或者0。

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

//*表示字符出現(xiàn)的次數(shù)是任意多次。

//$表示輸入的字符串必須以什么結(jié)尾。

//\d表示匹配任意數(shù)字字符,相當(dāng)于“[0-9]”。

//"{}"表示匹配前一個(gè)字符或子表達(dá)式n次。

//個(gè)人的理解:

//在字符串中表示\本身必須使用轉(zhuǎn)移符號(hào)\,比如用\d等時(shí)要用成\\d

//“\\”表示被“\”這個(gè)轉(zhuǎn)義字符轉(zhuǎn)義后的“\”,代表是純“\”

//而非字符串“\”。

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、手機(jī)號(hào)碼驗(yàn)證:

首位必須是1,第二位只能是3,4,5,6,7,8,9,0,后面跟9位數(shù)字。

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("請(qǐng)輸入的字符串\n"

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

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

+ "后面跟9位數(shù)字。");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();

//注釋,下面的內(nèi)容等是自己總結(jié)的相關(guān)知識(shí)(有助與記憶,理解等):

//^表示輸入的字符串必須以什么開頭。

//?表示字符出現(xiàn)的次數(shù)是1或者0。

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

//*表示字符出現(xiàn)的次數(shù)是任意多次。

//$表示輸入的字符串必須以什么結(jié)尾。

//\d表示匹配任意數(shù)字字符,相當(dāng)于“[0-9]”。

//"{}"表示匹配前一個(gè)字符或子表達(dá)式n次。

//個(gè)人的理解:

//在字符串中表示\本身必須使用轉(zhuǎn)移符號(hào)\,比如用\d等時(shí)要用成\\d

//“\\”表示被“\”這個(gè)轉(zhuǎn)義字符轉(zhuǎn)義后的“\”,代表是純“\”

//而非字符串“\”。

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

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

//個(gè)人的理解和總結(jié):"|"表示"或者"

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("不符合要求!");

}

}}}

依次控制單一變量地驗(yàn)正自己寫的正則表達(dá)式是否正確等:




9、輸入的字符串是一個(gè)合法的變量名。

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("請(qǐng)輸入的字符串是一個(gè)合法的變量名");

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();

//注釋,下面的內(nèi)容等是自己總結(jié)的相關(guān)知識(shí)(有助與記憶,理解等):

//^表示輸入的字符串必須以什么開頭。

//?表示字符出現(xiàn)的次數(shù)是1或者0。

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

//*表示字符出現(xiàn)的次數(shù)是任意多次。

//$表示輸入的字符串必須以什么結(jié)尾。

//\d表示匹配任意數(shù)字字符,相當(dāng)于“[0-9]”。

//"{}"表示匹配前一個(gè)字符或子表達(dá)式n次。

//個(gè)人的理解:

//在字符串中表示\本身必須使用轉(zhuǎn)移符號(hào)\,比如用\d等時(shí)要用成\\d

//“\\”表示被“\”這個(gè)轉(zhuǎn)義字符轉(zhuǎn)義后的“\”,代表是純“\”

//而非字符串“\”。

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

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

//個(gè)人的理解和總結(jié):"|"表示"或者"。

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

//但是Java中要用上"\"轉(zhuǎn)義字符,而且不必用“/”括起來(lái)

//個(gè)人的理解:\\$用了兩次的轉(zhuǎn)義,第一次時(shí)第一個(gè)“\”把

//第二個(gè)“\”轉(zhuǎn)義為純的字符串“\”,

//之后純的字符串“\”把$轉(zhuǎn)義為純的字符串“$”

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

//或簡(jiǎn)寫成String old = "^[a-zA-Z\\$_][a-zA-Z\\d_]*$";

//具體直觀和簡(jiǎn)寫的寫法我都嘗試過,效果都一樣。

//"|"表示"或者"

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

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

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

System.out.println(B);

if(B==true){


System.out.println("是一個(gè)合法的變量名!");

}


else{

System.out.println("不是一個(gè)合法的變量名!");

}

}}}



10、嘗試寫出郵箱驗(yàn)證的正則表達(dá)式。

要求一:必須包含一個(gè)@和.

要求二:@必須在.前面

要求三:@前面必須要有字母數(shù)字下劃線

要求四:@和.之間需要有字母數(shù)字下劃線

要求五:.后面必須跟上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("請(qǐng)輸入的字符串是一個(gè)郵箱!\n"

+ "要求一:必須包含一個(gè)@和.\n"

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

+ "要求三:@前面必須要有字母數(shù)字下劃線\n"

+ "要求四:@和.之間需要有字母數(shù)字下劃線\n"

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

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();

//注釋,下面的內(nèi)容等是自己總結(jié)的相關(guān)知識(shí)(有助與記憶,理解等):

//^表示輸入的字符串必須以什么開頭。

//?表示字符出現(xiàn)的次數(shù)是1或者0。

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

//*表示字符出現(xiàn)的次數(shù)是任意多次。

//$表示輸入的字符串必須以什么結(jié)尾。

//\d表示匹配任意數(shù)字字符,相當(dāng)于“[0-9]”。

//"{n}"表示匹配前一個(gè)字符或子表達(dá)式n次。

//"{n,}"表示匹配前一個(gè)字符或子表達(dá)式n次以上。

//個(gè)人的理解:

//在字符串中表示\本身必須使用轉(zhuǎn)移符號(hào)\,比如用\d等時(shí)要用成\\d

//“\\”表示被“\”這個(gè)轉(zhuǎn)義字符轉(zhuǎn)義后的“\”,代表是純“\”

//而非字符串“\”。

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

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

//個(gè)人的理解和總結(jié):"|"表示"或者"。

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

//但是Java中要用上"\"轉(zhuǎn)義字符,而且不必用“/”括起來(lái)

//個(gè)人的理解:\\$用了兩次的轉(zhuǎn)義,第一次時(shí)第一個(gè)“\”把

//第二個(gè)“\”轉(zhuǎn)義為純的字符串“\”,

//之后純的字符串“\”把$轉(zhuǎn)義為純的字符串“$”,\\.也同理

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

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

//或簡(jiǎn)寫成String old = "^[a-zA-Z\\$_][a-zA-Z\\d_]*$";

//具體直觀和簡(jiǎn)寫的寫法我都嘗試過,效果都一樣。

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

//輸入的字符串必須是5個(gè)以上的h

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

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

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

System.out.println(B);

if(B==true){


System.out.println("是一個(gè)郵箱!");

}


else{

System.out.println("不是一個(gè)郵箱!");

}

}}}



11、輸入的是空白字符,例如空格\s,換行\(zhòng)n、制表符時(shí)\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("請(qǐng)輸入的字符串是空白字符,\n"

+ "例如空格\\s,換行\(zhòng)\n、\n"

+ "制表符時(shí)\\t,打印出true。\n"

+ "\\f——表示換頁(yè)符\n"

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

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

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

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

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();

//注釋,下面的內(nèi)容等是自己總結(jié)的相關(guān)知識(shí)(有助與記憶,理解等):

//^表示輸入的字符串必須以什么開頭。

//?表示字符出現(xiàn)的次數(shù)是1或者0。

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

//*表示字符出現(xiàn)的次數(shù)是任意多次。

//$表示輸入的字符串必須以什么結(jié)尾。

//\d表示匹配任意數(shù)字字符,相當(dāng)于“[0-9]”。

//"{n}"表示匹配前一個(gè)字符或子表達(dá)式n次。

//"{n,}"表示匹配前一個(gè)字符或子表達(dá)式n次以上。

//個(gè)人的理解:

//在字符串中表示\本身必須使用轉(zhuǎn)移符號(hào)\,比如用\d等時(shí)要用成\\d

//“\\”表示被“\”這個(gè)轉(zhuǎn)義字符轉(zhuǎn)義后的“\”,代表是純“\”

//而非字符串“\”。

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

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

//個(gè)人的理解和總結(jié):"|"表示"或者"。

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

//但是Java中要用上"\"轉(zhuǎn)義字符,而且不必用“/”括起來(lái)

//個(gè)人的理解:\\$用了兩次的轉(zhuǎn)義,第一次時(shí)第一個(gè)“\”把

//第二個(gè)“\”轉(zhuǎn)義為純的字符串“\”,

//之后純的字符串“\”把$轉(zhuǎn)義為純的字符串“$”,\\.也同理

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

//或簡(jiǎn)寫成String old = "^[a-zA-Z\\$_][a-zA-Z\\d_]*$";

//具體直觀和簡(jiǎn)寫的寫法我都嘗試過,效果都一樣。

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

//輸入的字符串必須是5個(gè)以上的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("請(qǐng)輸入的字符串是空白字符,\n"

+ "例如空格\\s,換行\(zhòng)\n、\n"

+ "制表符時(shí)\\t,打印出true。\n"

+ "\\f——表示換頁(yè)符\n"

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

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

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

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

Scanner s1=new Scanner(System.in);

String Scanner=s1.next();

//注釋,下面的內(nèi)容等是自己總結(jié)的相關(guān)知識(shí)(有助與記憶,理解等):

//^表示輸入的字符串必須以什么開頭。

//?表示字符出現(xiàn)的次數(shù)是1或者0。

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

//*表示字符出現(xiàn)的次數(shù)是任意多次。

//$表示輸入的字符串必須以什么結(jié)尾。

//\d表示匹配任意數(shù)字字符,相當(dāng)于“[0-9]”。

//"{n}"表示匹配前一個(gè)字符或子表達(dá)式n次。

//"{n,}"表示匹配前一個(gè)字符或子表達(dá)式n次以上。

//個(gè)人的理解:

//在字符串中表示\本身必須使用轉(zhuǎn)移符號(hào)\,比如用\d等時(shí)要用成\\d

//“\\”表示被“\”這個(gè)轉(zhuǎn)義字符轉(zhuǎn)義后的“\”,代表是純“\”

//而非字符串“\”。

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

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

//個(gè)人的理解和總結(jié):"|"表示"或者"。

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

//但是Java中要用上"\"轉(zhuǎn)義字符,而且不必用“/”括起來(lái)

//個(gè)人的理解:\\$用了兩次的轉(zhuǎn)義,第一次時(shí)第一個(gè)“\”把

//第二個(gè)“\”轉(zhuǎn)義為純的字符串“\”,

//之后純的字符串“\”把$轉(zhuǎn)義為純的字符串“$”,\\.也同理


//方法一:

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

//方法二:

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

//方法三:

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

//或簡(jiǎn)寫成String old = "^[a-zA-Z\\$_][a-zA-Z\\d_]*$";

//具體直觀和簡(jiǎn)寫的寫法我都嘗試過,效果都一樣。

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

//輸入的字符串必須是5個(gè)以上的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、輸入的不是空白字符時(shí),打印出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("請(qǐng)輸入的字符串不是空白字符,\n"

+ "例如空格\\s,換行\(zhòng)\n、\n"

+ "制表符時(shí)\\t,打印出true。\n"

+ "\\f——表示換頁(yè)符\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、輸入的字符串中包含連續(xù)的兩個(gè)p時(shí),打印出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("請(qǐng)輸入的字符串中包含連續(xù)的兩個(gè)p時(shí),\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、輸入的字符串包含連續(xù)的五個(gè)或五個(gè)以上K時(shí),打印出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("輸入的字符串包含連續(xù)的\n"

+ "五個(gè)或五個(gè)以上K時(shí),打印出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);}}}




正則表達(dá)式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

//輸入一個(gè)字符串,a或者""

//String inp = "www.com";

//正則表達(dá)式

//?表示字符出現(xiàn)的次數(shù)是1或者0

//*表示字符出現(xiàn)的次數(shù)是任意多次

//+表示字符出現(xiàn)的次數(shù)是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);


//$表示輸入的字符串必須以什么結(jié)尾

//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結(jié)尾,

//中間可以是任意多個(gè)字符

//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);

//輸入的字符串必須全部是數(shù)字

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

//也可以使用元字符來(lái)表示

//在字符串中表示\本身必須使用轉(zhuǎn)移符號(hào)\

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

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

// System.out.println(r7);

//輸入的字符串必須是數(shù)字字母

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


//\w表示數(shù)字字母下劃線

//變量名必須以數(shù)字,字母,下劃線中的組成,不能以數(shù)字開頭

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

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

//System.out.println(r9);


//輸入的字符串必須是四個(gè)連續(xù)的a

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

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

//System.out.println(r10);

//輸入的字符串必須是3到7個(gè)c

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

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

//System.out.println(r11);


//輸入的字符串必須是5個(gè)以上的h

String reg12 = "h{5,}";


//輸入的必須是一個(gè)手機(jī)號(hào)碼,必須以1開頭,是11位數(shù)字

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


//輸入的字符串必須是一個(gè)0.xx的兩位小數(shù)

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

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

System.out.println(r14);


//輸入的字符串必須以除了a以外的任何字符開頭

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

}


}





學(xué)習(xí)筆記:

正則表達(dá)式

JS和JAVA等多種語(yǔ)言中都可以使用正則表達(dá)式,而且語(yǔ)法規(guī)則都一樣。



正則表達(dá)式中的特殊字符:

?:表示出現(xiàn)的次數(shù)是1或者0

+:出現(xiàn)的次數(shù)不能為0

*:可以出現(xiàn)任意多次

^:以什么開頭

$:以什么結(jié)尾

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



正則表達(dá)式中的元字符:

所謂元字符就是指那些在正則表達(dá)式中具有特殊意義的專用字符,其使得正則表達(dá)式具有強(qiáng)大的文字處理能力。



基本元字符:

  • "." ——表示匹配除換行符和回車符外的任意單個(gè)字符

  • "|"?——表示邏輯“或”

  • "[]" ——表示匹配字符集合中的一個(gè)字符

  • "[^]"——表示匹配不在字符集合中的一個(gè)字符,即對(duì)集合取非

  • "-"——表示定義一個(gè)區(qū)間,如a-z即代表小寫字母a-z

  • "()"——表示生成子表達(dá)式

  • "\"——表示對(duì)下一個(gè)字符進(jìn)行轉(zhuǎn)義,轉(zhuǎn)義即理解為取消其特殊含義

特殊元字符

  • \d——匹配任意數(shù)字字符,相當(dāng)于“[0-9]”

  • \D——“\d”的反義,匹配任意非數(shù)字字符,相當(dāng)于“[^0-9]”

  • \w——匹配任一字母、數(shù)字、下劃線,在 Unicode 編碼中也可匹配漢字、俄文等字符

  • \W——“\w”的反義,包括空白字符、標(biāo)點(diǎn)等

  • \s——匹配一個(gè)空白字符,包括空格、水平制表符、換行符、回車符等

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

數(shù)量元字符

  • "*"——匹配前一個(gè)字符或子表達(dá)式任意次重復(fù),可以匹配零次

  • "+"——匹配前一個(gè)字符或子表達(dá)式一次或多次重復(fù),與"*"的唯一區(qū)別在于不能匹配零次

  • "?"——匹配前一個(gè)字符或子表達(dá)式零次或一次

  • "{}"——匹配前一個(gè)字符或子表達(dá)式n次

  • "{m,n}"——匹配前一個(gè)字符或子表達(dá)式至少m次至多n次

  • "{n,}"——匹配前一個(gè)字符n次或更多次

空白元字符

  • \f——表示換頁(yè)符

  • \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





正則表達(dá)式大全:

字符 描述?

\ 將下一個(gè)字符標(biāo)記為一個(gè)特殊字符、或一個(gè)原義字符、或一個(gè)向后引用、或一個(gè)八進(jìn)制轉(zhuǎn)義符。例如,“n”匹配字符“n”?!癨n”匹配一個(gè)換行符。序列“\\”匹配“\”而“\(”則匹配“(”。?

^ 匹配輸入字符串的開始位置。如果設(shè)置了RegExp對(duì)象的Multiline屬性,^也匹配“\n”或“\r”之后的位置。?

$ 匹配輸入字符串的結(jié)束位置。如果設(shè)置了RegExp對(duì)象的Multiline屬性,$也匹配“\n”或“\r”之前的位置。?

* 匹配前面的子表達(dá)式零次或多次。例如,zo*能匹配“z”以及“zoo”。*等價(jià)于{0,}。?

+ 匹配前面的子表達(dá)式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等價(jià)于{1,}。?

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

{n} n是一個(gè)非負(fù)整數(shù)。匹配確定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的兩個(gè)o。?

{n,} n是一個(gè)非負(fù)整數(shù)。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o?!皁{1,}”等價(jià)于“o+”?!皁{0,}”則等價(jià)于“o*”。?

{n,m} m和n均為非負(fù)整數(shù),其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”將匹配“fooooood”中的前三個(gè)o?!皁{0,1}”等價(jià)于“o?”。請(qǐng)注意在逗號(hào)和兩個(gè)數(shù)之間不能有空格。?

? 當(dāng)該字符緊跟在任何一個(gè)其他限制符(*,+,?,{n},{n,},{n,m})后面時(shí),匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,而默認(rèn)的貪婪模式則盡可能多的匹配所搜索的字符串。例如,對(duì)于字符串“oooo”,“o+?”將匹配單個(gè)“o”,而“o+”將匹配所有“o”。?

. 匹配除“\n”之外的任何單個(gè)字符。要匹配包括“\n”在內(nèi)的任何字符,請(qǐng)使用像“[.\n]”的模式。?

(pattern) 匹配pattern并獲取這一匹配。所獲取的匹配可以從產(chǎn)生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中則使用$0…$9屬性。要匹配圓括號(hào)字符,請(qǐng)使用“\(”或“\)”。?

(?:pattern) 匹配pattern但不獲取匹配結(jié)果,也就是說這是一個(gè)非獲取匹配,不進(jìn)行存儲(chǔ)供以后使用。這在使用或字符“(|)”來(lái)組合一個(gè)模式的各個(gè)部分是很有用。例如“industr(?:y|ies)”就是一個(gè)比“industry|industries”更簡(jiǎn)略的表達(dá)式。?

(?=pattern) 正向預(yù)查,在任何匹配pattern的字符串開始處匹配查找字符串。這是一個(gè)非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。預(yù)查不消耗字符,也就是說,在一個(gè)匹配發(fā)生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預(yù)查的字符之后開始。?

(?!pattern) 負(fù)向預(yù)查,在任何不匹配pattern的字符串開始處匹配查找字符串。這是一個(gè)非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。預(yù)查不消耗字符,也就是說,在一個(gè)匹配發(fā)生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預(yù)查的字符之后開始?

x|y 匹配x或y。例如,“z|food”能匹配“z”或“food”?!?z|f)ood”則匹配“zood”或“food”。?

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

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

[a-z] 字符范圍。匹配指定范圍內(nèi)的任意字符。例如,“[a-z]”可以匹配“a”到“z”范圍內(nèi)的任意小寫字母字符。?

[^a-z] 負(fù)值字符范圍。匹配任何不在指定范圍內(nèi)的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范圍內(nèi)的任意字符。?

\b 匹配一個(gè)單詞邊界,也就是指單詞和空格間的位置。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。?

\B 匹配非單詞邊界?!癳r\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。?

\cx 匹配由x指明的控制字符。例如,\cM匹配一個(gè)Control-M或回車符。x的值必須為A-Z或a-z之一。否則,將c視為一個(gè)原義的“c”字符。?

\d 匹配一個(gè)數(shù)字字符。等價(jià)于[0-9]。?

\D 匹配一個(gè)非數(shù)字字符。等價(jià)于[^0-9]。?

\f 匹配一個(gè)換頁(yè)符。等價(jià)于\x0c和\cL。?

\n 匹配一個(gè)換行符。等價(jià)于\x0a和\cJ。?

\r 匹配一個(gè)回車符。等價(jià)于\x0d和\cM。?

\s 匹配任何空白字符,包括空格、制表符、換頁(yè)符等等。等價(jià)于[\f\n\r\t\v]。?

\S 匹配任何非空白字符。等價(jià)于[^\f\n\r\t\v]。?

\t 匹配一個(gè)制表符。等價(jià)于\x09和\cI。?

\v 匹配一個(gè)垂直制表符。等價(jià)于\x0b和\cK。?

\w 匹配包括下劃線的任何單詞字符。等價(jià)于“[A-Za-z0-9_]”。?

\W 匹配任何非單詞字符。等價(jià)于“[^A-Za-z0-9_]”。?

\xn 匹配n,其中n為十六進(jìn)制轉(zhuǎn)義值。十六進(jìn)制轉(zhuǎn)義值必須為確定的兩個(gè)數(shù)字長(zhǎng)。例如,“\x41”匹配“A”?!癨x041”則等價(jià)于“\x04&1”。正則表達(dá)式中可以使用ASCII編碼。.?

\num 匹配num,其中num是一個(gè)正整數(shù)。對(duì)所獲取的匹配的引用。例如,“(.)\1”匹配兩個(gè)連續(xù)的相同字符。?

\n 標(biāo)識(shí)一個(gè)八進(jìn)制轉(zhuǎn)義值或一個(gè)向后引用。如果\n之前至少n個(gè)獲取的子表達(dá)式,則n為向后引用。否則,如果n為八進(jìn)制數(shù)字(0-7),則n為一個(gè)八進(jìn)制轉(zhuǎn)義值。?

\nm 標(biāo)識(shí)一個(gè)八進(jìn)制轉(zhuǎn)義值或一個(gè)向后引用。如果\nm之前至少有nm個(gè)獲得子表達(dá)式,則nm為向后引用。如果\nm之前至少有n個(gè)獲取,則n為一個(gè)后跟文字m的向后引用。如果前面的條件都不滿足,若n和m均為八進(jìn)制數(shù)字(0-7),則\nm將匹配八進(jìn)制轉(zhuǎn)義值nm。?

\nml 如果n為八進(jìn)制數(shù)字(0-3),且m和l均為八進(jìn)制數(shù)字(0-7),則匹配八進(jìn)制轉(zhuǎn)義值nml。?

\un 匹配n,其中n是一個(gè)用四個(gè)十六進(jìn)制數(shù)字表示的Unicode字符。例如,\u00A9匹配版權(quán)符號(hào)(?)。


Java和JS正則表達(dá)式代碼,判斷是否為空白字符,學(xué)習(xí)筆記PPT元字符,轉(zhuǎn)義字符-詩(shī)書畫唱的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
精河县| 两当县| 安西县| 修文县| 淳化县| 汝城县| 禹州市| 砀山县| 安国市| 左权县| 乌什县| 遂溪县| 松阳县| 彰化市| 涟源市| 昆山市| 碌曲县| 虞城县| 双城市| 丰原市| 大洼县| 区。| 乐陵市| 遵化市| 名山县| 抚远县| 富顺县| 托克托县| 普定县| 邯郸市| 衡东县| 沧源| 桐城市| 三门县| 库伦旗| 怀化市| 额敏县| 陕西省| 汤原县| 北辰区| 利辛县|