正则表达式

一、正则表达式知识点:   

是一种专门用于操作字符串的规则,   通过一些符号来表示,简化对字符串的复杂操作  

弊端:阅读性差

常见的操作:

  1、匹配 String matches(regex)

  2、获取(查找):Pattern,Matcher

    Pattern p=Pattern.compile(regex);

   Matcher m=p.matcher(String)

 while(m. find())

{

System.out.println(m.group());

}

  3、切割:String split(regex);

  4、替换:String replaceAll(regex,str);

 

  示例:

   获取文档中连续的数字

String  regex="\\d(5,)";

 

Patternp=Pattern.compile(regex);

   Matcher m=p.matcher(String)

 while(m. find())

{

String s=m.group();

s.replaceAll(regex,"#");

}

 

5、网页爬虫:

通过网络以及IO读取网页的源文件,并通过规则获取网页中符合规则的数据

比如:mail爬虫

Stringmailreg="[a-zA-Z0-9]{6-12}@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";

正则表达式中组的含义:将部分进行封装以便重用。\\num反响引用指定组 

 

二、部分功能及代码实现

1、登陆界面中的部分功能的验证

//校验方法

function  check(inputNode,regex,divId){   
 var b=false;
 var divNode=document.getElementById(divId);
  if(regex.test(inputNode.value))
 {
  inputNode.className="norm";
  divNode.style.display="none";
  b=true;
  }
  else 
  {
  inputNode.className="error";
  divNode.style.display="block";
    }
return b;
}
//校验用户
function  checkUser(userNode)
{
var regex=/^\w{3,5}$/;              //定义校验用户正则表达式
  return check(userNode,regex,"userdiv");
}
//校验密码
function  checkPsw(pswNode)
{
var regex=/^[a-z0-9]{3,5}$/i;     //定义校验密码正则表达式
  return check(pswNode,regex,"pswdiv");
}
//校验确认密码
function checkRepsw(repswNode)
{                                  //确认密码需要从密码框和确认密码框取值,并验证是否相同,不需要正则表达式
var b=false;
var value1=repswNode.value;
var value2=document.getElementsByName("psw")[0].value;
var divNode=document.getElementById("repswdiv");
if(value1==value2)
{
  repswNode.className="norm";
  divNode.style.display="none";
  b=true;
  }
  else 
  {
  repswNode.className="error";
  divNode.style.display="block";
  
  }
  return b;


}
//校验邮箱
function  checkMail(mailNode)
{
var regex=/^\w+@\w+(\.\w+)+$/;    //定义校验邮箱正则表达式
  return check(mailNode,regex,"maildiv");
}


function checkform(formNode)
{with(formNode)
{


if(checkUser(user) && checkPsw(psw) && checkRepsw(repsw) && checkMail(mail))
event.returnValue=true;
else 
event.returnValue=false;
}


}


//校验用户 老式的
 function checkUserDemo(userNode)
{  
 var value=userNode.value;
 var regex=/^\w{3,5}$/;               //定义校验用户正则表达式
 var divNode=document.getElementById("userdiv");   //获取用户框的值
 if(regex.test(value))          //判断是否符合正则表达式的要求
 {
  userNode.className="norm";
  divNode.style.display="none";
  }
  else 
  {
  userNode.className="error";
  divNode.style.display="block";
  
  }
}

2、对qq号码进行校验
要求:5-15 0不能开头  只能数数字
public static void checkQQ()

{
String qq="12345";
String regex="[1-9][0-9]{4,14}";
boolean flag=qq.matches(regex);
if(flag) System.out.println(qq+"...is ok");
else System.out.println(qq+"...is 不合法");
}
3、输出字符串中字符长度为3的字符串

public static void getDemo()
{
String str="ming tian fang jia  wer qds fga";
 
String reg="\\b[a-z]{3}\\b";
//将规则封装成对象
Pattern p=Pattern.compile(reg);
//让正则对象和要作用的字符串想关联,获取匹配其对象
Matcher m=p.matcher(str);
//m.find();//将规则作用到字符串上,并进行复核规则的子串查找
//System.out.println(m.group());//用于获取匹配后的结果

while(m.find())
{
System.out.println(m.group()+"..."+m.start()+"...."+m.end());
}
}
4、将下列字符串转成:我要学编程
 到底四种功能中哪一种呢?或者那几个呢
 思路:
( 1)如果只想知道该字符串是否是错,使用匹配
 (2)如果将已有的字符串变成另一个字符串,替换
 (3)想要按照自定义的方式将字符串变成多个字符串。切割。获取规则以外的子串
 (4)想要拿到符合要求的字符串,获取。获取符合规则的子串
public static void test_1()
{
String str="我我...我我...我要...要要...学学学...学学..编编...程程";
/*
* 将已有字符串变成另一个字符串。使用替换
* 1,可以先将。去掉
* 2,在将多个重复的内容变成单个内容

* */
str =str.replaceAll("\\.+","");
System.out.println(str);
str=str.replaceAll("(.)\\1+","$1");
System.out.println(str);
}
5、 将ip地址进行地址段顺序排序

192.68.1.254 
102.49.23.13
10.10.10.10
2.2.2.2
8.109.90.30
  还按照字符串自然顺序,只要让他们每一段都是3位即可
 1,按照每一段需要的最多的0进行补齐,那么每一段就会至少保证3位。
  2,将每一段只保留3位,这样,所有ip地址都是每一段三位
public static void ipSort()
{  String ip="192.68.1.254  102.49.23.3  10.10.10.10  2.2.2.2  8.109.90.30";
ip=ip.replaceAll("(\\d+)", "00$1");
System.out.println(ip);
ip=ip.replaceAll("0*(\\d{3})","$1");
System.out.println(ip);
String[] arr=ip.split(" +");

TreeSet<String> ts=new TreeSet<String>();
for(String s:arr)
{
ts.add(s);
}
for(String s:ts)
{   s=s.replaceAll("0*(\\d+)","$1");
System.out.println(s);
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Robust28

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值