正则大法好

2019-01-11  本文已影响0人  sarah_wqq

基础

1、定位

^ 字符串的开始
$ 字符串的结尾
\b 匹配一个字边界,即字与空格间的位置。
\B 非字边界

2、数字字母

\d \w
[0-9] [a-z] [A-z]
{n} 非负整数

3、非打印字符

\n 换行
\r 回车
\s 空白字符
\S 非空白字符

4、特殊字符

+ 一次或多次
* 零次或多次
. 除换行符 \n 之外的任何单字符
() 提取匹配的字符串 (0-9)匹配字符串"0-9"本身
(abc)? 表示这一组要么一起出现,要么不出现
[] 限定字符集 [0-9]*匹配数字
{n,m} 长度 [0-9]{0,9}表示长度为0到9的数字字符串
[^] 排除
| || 或

5、修饰符

i 大小写不敏感
g 全局匹配

6、

+ 和 * 贪婪匹配,匹配尽可能长的字符串
+? 和 *? 懒惰匹配,匹配符合条件的尽量短的字符串
(?!pattern) 过滤掉不包含的
(?:pattern) 优化性能,不反悔子匹配结果,比如:
(aaa)(bbb)(ccc)(?:ddd)(eee)可以用1获取(aaa)匹配到的内容,而3则获取到了(ccc)匹配到的内容,而$4则获取的是由(eee)

var str3 = "haabaab";
str3.match(/h.*b/);    //haabaab
str3.match(/h.*?b/);  //haab
str3.match(/ha+/);    //haa
str3.match(/ha+?/);  //ha

var str = "hello123back, hello456back";
str.match(/hello(?!456).*?back/);    //hello123back
str.match(/(hello).*/);      //["hello123back, hello456back", "hello"]
str.match(/(?:hello).*/);   //["hello123back, hello456back"]

7、前置后置

aaa(?=bbb) aaa后面必须是bbb
exp1(?!exp2) aaa后面不是bbb

(/a(?=b)/).test("xxxxabxxxx") //true
(/a(?!b)/).test("xxxxabxxxx")  //false

例子

匹配IP的每一段
^([0-9]||[1-9][0-9]||1[0-9][0-9]||2[0-4][0-9]||25[0-5])$

邮件地址
^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$/

用法

1.

var reg = new RegExp("^[0-9]+$");
reg.test(text);

2.

( /^[0-9]+$/).test(text);

3. replace

text.replace(/aaa/g, "bbb");

4.match

text.match(exp);
上一篇 下一篇

猜你喜欢

热点阅读