java 和 JS(javaScript)中的反斜杠正則轉義


首先說下為什么要轉義。在正則中有些字符有特殊含義的,

比方說

* 可以前一個子表達式的任意次

. 表示除“\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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM