正则表达式

1、正则表达式(Regualr Expression) 缩写:RegExp RegEx
本质:用来记录文本规则的代码
正则表达式是对字符串操作的一种逻辑公式,就是用实现定义好好的一些特点字符及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

2、创建正则对象
可以使用字面量的方式创建
eg1:var reg1 = /\d/;//数字 var res = reg1.test('abcdefg1');//true,判断这个小括号里面的字符串,包不包含数字。
可以使用构造函数来创建
eg2:var reg2 = new RegExp(/男|女/) reg2.test('哈哈哈哈');//false,判断这个小括号里面有没有包含‘男或者女’这两个字符串,包含true,不包含false。 简写:/男|女/.test('哈哈哈哈,他是男的');//true

3、正则对象的 test方法
语法:正则对象.test(需要用正则来验证的字符串);
返回值:布尔类型
如果你要验证的这个字符串,满足这个正则,就返回一个true,如果不满足就返回一个false

4、预定义类1
. [^\n\r] 除了换行和回车之外的任意字符 \d [0-9] 数字字符 \D [^0-9] 非数字字符 \s [\f\r\n\t\v] 不可见字符 \S [^\f\r\n\t\v] 可见字符 \w [a-z A-Z 0-9 _] 单词字符(所有的字母数字) \W [^a-z A-Z 0-9 _] 非单词字符(所有的字母数字)

5、自定义类
用test检测的字符串里面,有没有包含d这个字母,如果有就是true
eg:/d/.test('123');//false /d/.test('12d3');//true

6、或和优先级 | ()
用test检测的字符串里面,如果有heia,或者hema,那么就是true
eg:/he(i|m)a/.test('hei');//false /he(i|m)a/.test('heia');//true

7、简单类 []
简单类只代表一个字符
用test检测的字符串中,出现[]中的字符任意一个,就是true
eg:/[abc]/.test('a');//true /[abc]/.test('d');//false
自定义类和简单类合并
test字符中有:yaz ybz ycz 就为true
eg:/y[abc]z/.test('yaz');//true /y[abc]z/.test('yabcz');//false /y(aa|bb|cc)z/.test('yaaz');true

8、负向类 [^]
用test检测的字串中,有除了中括号中的内中之外的任意一个,出现一次或者一次以上,就是true
eg:/[^abc]/.test('a');//false /[^abc]/.test('ad');//true

9、范围类
有时匹配的东西过多,而且类型又相同,可以在中间加个横线

     /[0-9]/.test('adfs111');//true

10、组合类
eg:/[a-m1-5]/.test('b');//true /[^0-5][^a-g]/.test('6z');//true /[^0-5][^a-g]/.test('4yaaabbbc7cc');//true c7满足 /[^0-5]|[^a-g]/.test('4');//true

11、边界

 eg:/^\d/.test('abce');//false
     /^\d/.test('1bce');//true```

 /$/  会匹配行或者字符串的结尾位置
 eg:/ac$/.test('ac777');//false
     /ac$/.test('777ac');//true

12、严格匹配 /^ $/ 只能出现一次

eg:/bc$/.test('bcbcbc');//true
        /^bc$/.test('bc');//true
        /^bc$/.test('bcbcbc');//false
        /^(bc)+$/.test('bcbcbcbc');//true
        /^bc+$/.test('bcc');//true

13、量词

*   重复零次或更多   x>=0        {0,}
    +   重复一次或更多   x>=1        {1,}
    ?  重复零次或一次   x=(0||1)    {0,1}
    eg:*
        /^colo*r$/.test('colr');//true
        /^colo*r$/.test('colooor');//true
        /^(color)*$/.test('');//true
        /^(color)*$/.test('colorcolor');//true
        +
        /^colo+r$/.test('colr');//false
        /^colo+r$/.test('color');//true
        /^colo+r$/.test('coloooor');//true
        ?
        /^colo?r$/.test('colr');//true
        /^colo?r$/.test('color');//true
        /^colo?r$/.test('coloooor');//false

    {n}    n次
    {n,}   重复n次或更多
    {n,m}  重复n到m次

    eg:{n}
        /^colo{2}r$/.test('colr');//false
        /^colo{2}r$/.test('coloor');//true
        /^colo{2}r$/.test('colooor');//false
        {n,}
        /^colo{2,}r$/.test('colr');//false
        /^colo{2,}r$/.test('coloor');//true
        /^colo{2,}r$/.test('colooor');//true
        {n,m}
        /^colo{2,3}r$/.test('colr');//false
        /^colo{2,3}r$/.test('coloor');//true
        /^colo{2,3}r$/.test('colooor');//true
        /^colo{2,3}r$/.test('coloooor');//false

14、验证汉字(浏览器中:escape转中文为编码;unescape转编码为中文)
/^[\u4e00-\u9fa5]{2,4}$/.test('王者荣耀');//true 2-4个汉字

15、字符串方法
replace 替换
eg:var str1 = 'abcdef';
var strNew = str1.replace(/b/g,'q');//'aqcdef'
里面的g代表能把str1中的所有b都替换成q;写i是代表忽略大小写,所以gi就代表忽略大小写的所有替换

match  提取
    eg:var str = '1a2  b3c';
    var arr = str.match(/\d+/g);//[1,2,3]
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容