Java正則表示式轉義
阿新 • • 發佈:2019-02-06
正則需要轉義字元:'$', '(', ')', '*', '+', '.', '[', ']', '?', '\\', '^', '{', '}', '|'
首先說下為什麼要轉義。在正則中有些字元有特殊含義的,比方說 * 可以前一子表示式的任意次,. 表示除“\r\n”之外的任何單個字元,+ 表示前一子表示式的一次或多次,等。而在有些情況下,需要正則驗證這些字元,比方說要驗證加減乘除四個運算子號,為了告訴編譯器,你要驗證的是一個字元而不是正則表示式,就要對這些有特殊含義的字元進行轉義,這樣就有了轉義這一操作。
在java 和javascipt中,都是用反斜槓“\”進行轉義,然後兩種語言的用法不盡相同,下面舉例說明:
1. Java中轉義字元的使用
java 中正則 一個反斜槓要用兩個反斜槓表示,例如"\\"表示一個反斜槓"\",第一個反斜槓為轉義,第二個為反斜槓本身。下面看個例子:
Pattern pattern=Pattern.compile("\\.");
System.out.println(pattern);
//輸出 /.
所以要驗證一個反斜槓,需要四個反斜槓\\\\
Pattern pattern=Pattern.compile("\\\\");
System.out.println(pattern);
// 輸出 \\
驗證一個反斜槓字元:
Pattern pattern=Pattern.compile("[\\\\]");
System.out.println(pattern);//輸出[\\] 表示要驗證反斜槓本身
String a="\\";
System.out.println("a="+a);//輸出a=\,表示 一個反斜槓字元
Matcher matcher=pattern.matcher(a);
System.err.println(matcher.matches());//輸出 true,驗證通過
驗證任意次數1
Pattern pattern=Pattern.compile("^1*$");//驗證任意次數1
System.out.println(pattern);//輸出^[-+*/]$
String a="1111";
System.out.println("a="+a);//輸出a=1111
Matcher matcher=pattern.matcher(a);
System.err.println(matcher.matches());//輸出 true,驗證通過驗證通過
驗證"1*"字串
Pattern pattern=Pattern.compile("^1\\*$");//驗證任意次數1
System.out.println(pattern);//輸出^1\*$
String a="1*";
System.out.println("a="+a);//輸出a=1*
Matcher matcher=pattern.matcher(a);
System.err.println(matcher.matches());//輸出 true,驗證通過
驗證+-*/
減號放第一位,不需要轉義
Pattern pattern=Pattern.compile("^[-+*/]$");//
System.out.println(pattern);//輸出^[-+*/]$
String a="/";
System.out.println("a="+a);//輸出a=-,表示 一減號字元
Matcher matcher=pattern.matcher(a);
System.err.println(matcher.matches());//輸出 true,驗證通過
減號不在第一位,需要轉義,原因:正則表示式中[0-9] 表示0到9任意字元
Pattern pattern=Pattern.compile("^[+\\-*/]$");//
System.out.println(pattern);//輸出^[+\-*/]$
String a="-";
System.out.println("a="+a);//輸出a=-,表示 一減號字元
Matcher matcher=pattern.matcher(a);
System.err.println(matcher.matches());//輸出 true,驗證通過
2. js 中的正則轉義
直接用一個反斜槓即可完成轉義
var str=/^\\$/; //驗證一個反斜槓
var testStr='\\';
console.log(str.test(testStr))//輸出true
驗證+-*/
var str=/^[+\-*/]$/; //驗證+-*/
var testStr='-';
console.log(str.test(testStr))//輸出true
首先說下為什麼要轉義。在正則中有些字元有特殊含義的,比方說 * 可以前一子表示式的任意次,. 表示除“\r\n”之外的任何單個字元,+ 表示前一子表示式的一次或多次,等。而在有些情況下,需要正則驗證這些字元,比方說要驗證加減乘除四個運算子號,為了告訴編譯器,你要驗證的是一個字元而不是正則表示式,就要對這些有特殊含義的字元進行轉義,這樣就有了轉義這一操作。
在java 和javascipt中,都是用反斜槓“\”進行轉義,然後兩種語言的用法不盡相同,下面舉例說明:
1. Java中轉義字元的使用
java 中正則 一個反斜槓要用兩個反斜槓表示,例如"\\"表示一個反斜槓"\",第一個反斜槓為轉義,第二個為反斜槓本身。下面看個例子:
Pattern pattern=Pattern.compile("\\.");
System.out.println(pattern);
//輸出 /.
這個要驗證的是點.本身
Pattern pattern=Pattern.compile("\\\\");
System.out.println(pattern);
// 輸出 \\
驗證一個反斜槓字元:
Pattern pattern=Pattern.compile("[\\\\]");
System.out.println(pattern);//輸出[\\] 表示要驗證反斜槓本身
String a="\\";
System.out.println("a="+a);//輸出a=\,表示 一個反斜槓字元
Matcher matcher=pattern.matcher(a);
System.err.println(matcher.matches());//輸出 true,驗證通過
驗證任意次數1
Pattern pattern=Pattern.compile("^1*$");//驗證任意次數1
System.out.println(pattern);//輸出^[-+*/]$
String a="1111";
System.out.println("a="+a);//輸出a=1111
Matcher matcher=pattern.matcher(a);
System.err.println(matcher.matches());//輸出 true,驗證通過驗證通過
驗證"1*"字串
Pattern pattern=Pattern.compile("^1\\*$");//驗證任意次數1
System.out.println(pattern);//輸出^1\*$
String a="1*";
System.out.println("a="+a);//輸出a=1*
Matcher matcher=pattern.matcher(a);
System.err.println(matcher.matches());//輸出 true,驗證通過
驗證+-*/
減號放第一位,不需要轉義
Pattern pattern=Pattern.compile("^[-+*/]$");//
System.out.println(pattern);//輸出^[-+*/]$
String a="/";
System.out.println("a="+a);//輸出a=-,表示 一減號字元
Matcher matcher=pattern.matcher(a);
System.err.println(matcher.matches());//輸出 true,驗證通過
減號不在第一位,需要轉義,原因:正則表示式中[0-9] 表示0到9任意字元
Pattern pattern=Pattern.compile("^[+\\-*/]$");//
System.out.println(pattern);//輸出^[+\-*/]$
String a="-";
System.out.println("a="+a);//輸出a=-,表示 一減號字元
Matcher matcher=pattern.matcher(a);
System.err.println(matcher.matches());//輸出 true,驗證通過
2. js 中的正則轉義
直接用一個反斜槓即可完成轉義
var str=/^\\$/; //驗證一個反斜槓
var testStr='\\';
console.log(str.test(testStr))//輸出true
驗證+-*/
var str=/^[+\-*/]$/; //驗證+-*/
var testStr='-';
console.log(str.test(testStr))//輸出true