.:任何字符,有时候会匹配换行符有时候不匹配换行符,所以一般都是在一行中使用;换行符就是'\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以外的任意字符