正则表达式

.:任何字符,有时候会匹配换行符有时候不匹配换行符,所以一般都是在一行中使用;换行符就是'\n',ASCII编码为10(十六进制0x0A)的字符

\d:数字 

\D:非数字

\s:空格     

\S:非空格

\w:字符

\W:非字符

例1、判断是否是数字     (test() :在字符串中查找符合正则的内容,若查找到返回true,反之返回false.)

var str = '12314454';

var re = /\d/;

if(re.test(str)){

alert('all are numbers');

}else{

alert('not all are numbers');

}

\b是单词的分界处,代表着单词的开头和结尾,准确的说就是前一个和后一个字符不全是\w

正则表达式中的单词意思是:不少于一个的连续\w

 

例2、精确的查找hi;查找hi后面是不是跟着一个lucy

正则表达式为 \bhi\b

正则表达式为 \bhi\b.*\blucy\b

.代表hi后面的任意字符 *代表任意字符(但不能是换行的)为0个或者多个 \blucy\b是否有一个lucy这个单词

 

例3、正则表达式:0\d\d-\d\d\d\d\d\d\d\d

以0开头,2个数字-8个数字  可以匹配区号为3为的中国的电话号码

0\d\d\d-\d\d\d\d\d\d\d\d          可以匹配区号为4为的中国的电话号码

\d匹配的是一位数字。

可以简化写成 0\d{2}-\d{8}  或者  0\d{3}-\d{8}

{2}表示只能出现精确的两次

 

例4、

\ba\w*\b 表示以a开头,a后包含0个后者多个字符

\d+ 表示一个或者多个数字

\b\w{6}\b 匹配刚好六个字符

元字符^和$都匹配一个位置,^匹配的是字符串的开始 $匹配的是字符串的结尾

若一个网站要求你填写一个5到12为的QQ号:^\d{5,12}$

{5,12}代表5次到12次,包括5和12

^\d{5,12}$ 和 \d{5,12} 的区别在于

第一个字符串只有5-12个数字

第二个字符串只是包含有5-12个数字

 

例5、字符转义

使用\可以取消特殊字符的特殊意义

如 \. \\  \* \:

[\\?/:*|<>\"] 表示的是匹配'\', '?', '/', ':', '*', '|', '<', '>', '"' 中的任意一个字符

如 url = url.replaceAll("[\\?/:*|<>\"]", "_") + ".html";//就是将上面的所有字符都换成_下划线

[]代表的是或的意思,就是匹配中括号中的其中一个

 

例6、重复 Windows\d+  ^\w+

*表示0次或者多次

+表示1次或者多次

?表示0次或者一次

{n}表示精确n次

{n,}表示n次或者多次

{n,m}表示n次到m次

 

例7 [aeiou] [.?!] [0-9] [a-z0-9A-Z] \(?0\d{2}[)-]?\d{8}

1.匹配aeiou任意一个字母

2.匹配.?!任意一个字符

3.匹配0-9任意一个数字,如\d

4.匹配任意一个字符,如\w

5."(" ")"也是元字符,需要进行转义

\(? 表示0个或者一个,紧跟一个0然后是两位数字,[)-]表示 )-中的其中一个,?表示一个或者0个

后面紧跟八位数。

该表达式可以匹配多种格式的电话号码:(020)12345678    020-12345678   02012345678

也有可能是一些不正确的格式 如020)12345678 (02012345678

 

例8、分支条件'|' 又是一个元字符 所有要使用'\'进行转义

若要匹配上面的正确的电话号码格式的话,就可以分为3种情况

\(0\d{2}\)\d{8}|0\d{2}-\d{8}|0\d{10}

中国的电话号码加区号:\(0\d{2}\)\d{8}|\(0\d{3}\)\d{7}|0\d{2}-\d{8}|0\d{3}-\d{7}

 

例9、重复多个字符——分组

(\d{1,3}\.){3}\d{1,3}

括号中的\d{1,3}\.表示以数字开头1-3个并以.结尾

(){3}说明该分组会重复三次,重复三次后以1~3个数字结尾

如123.23.34.123、192.168.70.227,可以看到是匹配一个简单的ipv4的地址

但是该正则表达式也会匹配一些违法的ip地址

如999.999.999.999等

所以要写成更为精确的正则表达式,即最大的ip地址为255.255.255.255

((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

关键在于如果是2开头,第二位不能超过5

如果是1或者0,第二位可以是任意数字

 

例10、若查找任意除了数字的字符,使用\D

\S \D \B \W [^x] [^aeiou]

注意\W指的是除了字母 数字 下划线 汉字

\S是非空格

\D是非数字

\B是非单词开头或者结尾位置

[^x]除了x意外的任意字符

[^aeiou]除了aeiou以外的任意字符

 

 

 

 


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值