本文目录一览:
- 1、java和js正则的区别
- 2、js正则表达式 和java正则表达式一样吗
- 3、js正则转java正则怎么转
- 4、如何把js正则改为java正则
- 5、用JAVA正则表达式提取javascript函数体
java和js正则的区别
?!表示当前内容右边不包含这些字符
例如
表达式: a(?![a-zA-Z]+)
匹配字符串: abc a acd a1
匹配后的结果就是 a 和 a1 , 因为 匹配要求是 包含a,但a的右边不能包含任何[a-zA-Z]的字符.
Java里由于字符串中的\需要先转义,所有只要是写\都是两个\
因此\\d 就是 javascript里的\d
js正则表达式 和java正则表达式一样吗
javascript中的正则表达式和java的正则表达式基本上是相同的,区别在于分组引用和对象,方法
具体区别:
1).javascript正则表达式创建有两种方法:
a.显式创建:
var re = new RegExp("正则表达式模式串");
re.test(要校验或处理的源字符串);
b.隐式创建:
var re = /正则表达式模式串/;
要校验或处理的源字符串.match(re);
2).分组捕获对象引用方式不同
javascript也是使用"()"进行分组,但是捕获对象用RegExp对象的$1到$99来引用捕获对象。
附录:常用的javascript正则表达式,java的也类似
ip地址校验正则表达式(IPv4):
/^(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])(/.(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])){3}$/
Email校验正则表达式:
/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(/.[a-zA-Z0-9_-]+)+$/
格式为:2010-10-08类型的日期格式校验正则表达式:
/^/d{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]/d|3[0-1])$/
格式为:23:11:34类型的时间格式校验正则表达式:
/^([0-1]/d|2[0-3]):[0-5]/d:[0-5]/d$/
楼主结贴吧,查资料的时候看到的
js正则转java正则怎么转
js正则转java:你应该是想知道js正则表达式,在java里怎么写吧。
举例:String strRegex = "^[1][3,4,5,8][0-9]{9}$";校验手机号码
String str = "13977895777";
str.matches(strRegex );
如何把js正则改为java正则
JAVA好像真不能直接和JS的一样,不过我写了其他的办法,就当是从JS转成了JAVA版的吧,呵呵
public
class
Test
{
public
static
void
main(String[]
args)
{
System.out.println(getResults("12a4.678"));
}
public
static
int
getResults(String
s){
char
c[]
=
s.toCharArray();
if(s.length()
4){
return
0;
}
int
ls
=
0;
if
(matches(c,
"^[a-z]+$")){
ls++;
}
if
(matches(c,
"^[0-9]+$")){
ls++;
}
if
(matches(c,
"^[.[^a-z0-9]]+$")){
ls++;
}
if
(s.length()
6
ls
0){
ls--;
}
return
ls;
}
public
static
boolean
matches(char
c[],
String
regex){
for
(int
i
=
0;
i
c.length;
i++)
{
if(String.valueOf(c[i]).matches(regex)){
return
true;
}
}
return
false;
}
}
用JAVA正则表达式提取javascript函数体
Pattern regex = Pattern.compile("function\\s*?article\\(.*?\\)\\s*?\\{[^{}]*?(\\{.*?\\})*[^{}]*?\\}", Pattern.DOTALL | Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE | Pattern.MULTILINE);
把里面的article替换成你的参数就可以了