最近在复习java基础,看到了有关正则表达式的视频,所以写一遍文章,记录一下。
正则表达式,是java基础中的一部分。首先,有一个问题:
如果让你验证手机号码是否合法,你会怎么写?
1、打开浏览器,输入www.baidu.com?
2、然后搜索正则表达式?
3、copy到自己的代码中?
那么如果没有网络呢?怎么办?完了完了。我。。。我写不出来啊,如果你这么跟你的主管说,恭喜你,收拾下东西,准备下家面试吧!(手动[滑稽])
正则表达式的作用,通常用来验证一些合法性的信息,比如验证QQ号码是否合法、手机号码是否合法、邮箱是否合法。下面,我用三个例子(其实也就是看视频的总结)来总结下一些简单的正则表达式,而不会说让你第一眼看到正则表达式,反应是:这是神马?
1、验证QQ号码是否符合表达式
QQ号码的首位,一般不能为0,所以我们可以这样定义首位[1-9],而第二位到后面几位,都可以是任意的数值,所以,我们可以这么表示[0-9]{4,9},那么拼接起来,就是
[1-9][0-9]{4,9}
咦,不对啊,我们平时看到的不都是[1-9][\\d]{4,9}的吗?怎么你的又不一样了???不用急,这个我们后面慢慢探讨。
2、验证手机号码是否合法
手机号码的首位,我们只能是1开头,所以我们可以这样定义首位1,第二位一般都是[34578]几个数字,所以第二位我们可以这么表示[3,4,5,7,8],那么最后的9位呢?那就是任意的数字了,也就是[0-9]{9},PS:花括号的数字,一般用来表示位数,即,占了第几位。所以手机号码的正则表达式就是 1[34578][0-9]{9} 或者1[34578][\\d]{9}
3、验证手机号码是否合法
终于到了,这个比较复杂的情况,别问我难不难,我觉得写这个,比我早上早起还要辛苦。
邮箱的格式,无非就是 123456qw@qq.com/1234@sina.com/1234@163.com等等
那么我们怎么处理邮箱的正则表达式呢?
首先,我们可以把邮箱拆分成几部分,第一部分以@符号作为分割符。即@的前面,我们可以这样定义[a-zA-Z0-9_],但是这个只是表示的是一个字符,其实我们可能@前面可能有很多字符,所以我们可以这么做,[a-zA-Z0-9_]+,给它一个+号,表示@前面的字符长度是不一定的。
其次,我们可以用@后面的.作为分割符。这是第二部分。在@的后面,.的前面,我们可以这么定义[a-z0-9]+这样定义前面部分。
至于后面的.com,我们可以这样处理。(\\.[a-z]+) 这样,那就可以表示.com了,由于有的邮箱号码,可能是.com.cn这种的,那么我们可以这样定义,(\\.[a-z]+)+,这样就可以表示后面带的多个点的情况了。
那么这里合并起来,就是[a-zA-Z0-9_]+@[a-z0-9]+(\\.[a-z]+)+
时间太晚了,至于简写的,就明天再做总结吧!