正则表达式

目录

前言

一、正则表达式符号

二、常用的正则表达式

总结



前言

        正则表达式是一种文本模式,包括普通字符和元字符(一些特殊字符),主要就是使用单个字符串来描述,匹配一系列匹配某个句法规则的字符串。

        我在学习正则表达式的时候感觉里面的东西又多又乱,但它功能强大,应用时能提高效率。



一、正则表达式符号

修饰符:

        g        global        全局

        i         ignore case        不区分大小写

        m        multiline        多行

三种括号:

        小括号():表示一个子表达式,括号中的内容是一个完整的正则表达式;

        中括号  [ ]  :字符集,匹配单个字符,是否属于中括号中的一个字符;

        大括号  { }  :用于重复次数,大括号左边的表达式的匹配次数。

// 查找的字符串
let str = 'hellello'
// 正则表达式内容

// 匹配字符串  'ell'
let patt = /(ell)/
console.log(str.match(patt))
// 匹配字符  'e' 或 'l'  全局查找
let patt1 = /[el]/g
console.log(str.match(patt1))

// 将字符串  'ell'  匹配两次 
let patt2 = /(ell){2}/
console.log(str.match(patt2))

边界:

        ^        1,匹配输入开始。如果多行标志被设为true,也会匹配一个断行符的开始处;

                  2,放在字符集  [ ]  中开头,表示取反。

        $        匹配输入结尾。如果多行标志被设为 true,也会匹配一个断行符的前的结尾处。

字符类:

        .        (点号,小数点)匹配任意单个字符,但是行结束符除外

        \d        匹配任意阿拉伯数字。等价于[0-9]

        \D        匹配任意一个不是阿拉伯数字的字符。等价于[^0-9]

        \w        匹配任意字母,数字,下划线。等价于 [A-Za-z0-9_]

        \W        匹配除字母,数字,下划线之外的字符。等价于 [^A-Za-z0-9_]

\s         匹配一个空白符,包括空格、制表符、换页符、换行符和其他 Unicode 空格。

\S         匹配一个非空白符。

\t          匹配一个水平制表符(tab)

\r          匹配一个回车符(carriage return)

\n         匹配一个换行符(linefeed)

\v         匹配一个垂直制表符(vertical tab)

\f         匹配一个换页符(form-feed)

let str = `hello 
123 world`
// 任意单个字符
// let patt = /./       //[ 'h', index: 0, input: 'hello \n123 world', groups: undefined ]
// 任意数字
// let patt = /\d/      //[ '1', index: 7, input: 'hello \n123 world', groups: undefined ]
// 匹配空白符
// let patt = /\s/      //[ ' ', index: 5, input: 'hello \n123 world', groups: undefined ]
// 匹配换行符
let patt = /\n/      //[ '\n', index: 6, input: 'hello \n123 world', groups: undefined ]
console.log(str.match(patt))

字符集合:

        [xyz]        一个字符集合,也叫字符组,匹配集合中的任意一个字符,可以使用 ‘-’ 来指定一个范围。

        [^xyz]        反义字符组,匹配任意不在括号内的字符。

上面的正则表达式的符号都是任意匹配一个字符。下面的数量词可以匹配多个字符。

数量词:       

        x*           匹配前面的模式 x 0 或多次。

        x+           匹配前面的模式 x 1 或多次。等价于 {1,}。

        x?           匹配前面的模式 x 0 或 1 次。

        x{n}         n 是一个正整数。前面的模式 x 连续出现 n 次时匹配

        x{n,}        n 是一个正整数。前面的模式 x 连续出现至少 n 次时匹配。

        x{n,m}     n 和 m 为正整数。前面的模式 x 连续出现至少 n 次,至多 m 次时匹配。

        x*?           像上面的 * 一样匹配前面的模式 x,然而匹配是最小可能匹配。

        x+?          像上面的 + 一样匹配前面的模式 x,然而匹配是最小可能匹配。

        x|y           匹配 x 或 y

let str = `hello 
123 world`
let patt =/[l]{2,}/     //[ 'll', index: 2, input: 'hello \n123 world', groups: undefined ]
// let patt =/[l]{2}/
console.log(str.match(patt))

重复方法:

        贪婪        匹配重复字符时是尽可能多的匹配,默认{1,4}

        非贪婪        匹配重复字符时是尽可能少地匹配,在待匹配的字符数量词后跟随一个问号即可 

例如: {1,4}?  

        /a+/ 可以匹配一个或者多个连续的字母a, 当使用“aaa”作为匹配字符串时正则表达式会匹配它的三个字符。 

          /a+?/ 可以匹配一个或者多个连续的字母a, 但是尽可能少地匹配。只能匹配第一个a

let str = 'aaaaaa'
// let patt = /a+/      //[ 'aaaaaa', index: 0, input: 'aaaaaa', groups: undefined ]
let patt = /a+?/        //[ 'a', index: 0, input: 'aaaaaa', groups: undefined ]
console.log(str.match(patt))

二、常用的正则表达式

Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$

域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?

中文字符的正则表达式:[\u4e00-\u9fa5]

经度:((^[-]?[0-9])|(^[-]?[2-9]([0-9])?)|(^[-]?[1](([0-7])?)(([0-9])?)))(([.](([0-9])|([1-5][0-9])))?){1,2}$

纬度:((^[-]?[0-9])|(^[-]?[1-8]([0-9])?))(([.](([0-9])|([0-5][0-9])))?){1,2}$

像一些账号和密码,不同的地方有不同的规则。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值