Java正则表达式转义
2017-01-11 14:29
190 查看
正则需要转义字符:'$', '(', ')', '*', '+', '.', '[', ']', '?', '\\', '^', '{', '}', '|'
首先说下为什么要转义。在正则中有些字符有特殊含义的,比方说 * 可以前一子表达式的任意次,. 表示除“\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
相关文章推荐
- java 正则表达式,特殊字符转义
- Java正则表达式转义问题
- java 的转义字符,在正则表达式中应用
- 转义字符\(在hive+shell以及java中注意事项):正则表达式的转义字符为双斜线,split函数解析也是正则
- java正则表达式转义
- 转义字符\(在hive+shell以及java中注意事项):正则表达式的转义字符为双斜线,split函数解析也是正则
- Java处理正则表达式特殊字符转义
- Java Pattern Matcher 正则表达式需要转义的字符
- java正则表达式特殊字符转义
- java 的转义字符,在正则表达式中应用
- Java正则表达式 特殊字符转义
- Java正则表达式处理特殊字符转义的方法
- 正则表达式 - JAVA按"|"(竖线)分隔字符串,但忽略"/|"(转义的竖线)
- Java处理正则表达式特殊字符转义
- java 的转义字符,在正则表达式中应用
- regex 正则表达式 需要转义的特殊字符 以及 java、python实现
- java正则表达式; regular expression
- java正则表达式的使用
- Java正则表达式详解
- 用java实现简单的email正则表达式判断