正则表达式简单运用

开发工具与关键技术:vs mvc
作者:朱某人
撰写时间:2019年5月 3日

在学习中呢,刚认识到正则的一些用处,好处,那么在这里就讲讲正则表达式的一些简单运用。我希望能让你们了解到什么是正则表达式,同时能让自己加深对正则表达式的理解。
第一次看到正则表达式的时候呢,根本看不懂这是什么。就例如:οnkeyup=“value=value.replace(/[^\u4E00\u9FA5]/g,’’)” onbeforepaste=“clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^\u4E00\u9FA5]/g,’’)” 是不是第一次看真的不懂,只认识几个英文单词,但什么意思不懂,这句正则表达式的意思是限制只能输入中文。大多数人都是通过例子来学习正则表达式的,但是首先总得知道什么是正则表达式,那么正则表达式呢是描述一些规则的工具,记录文本规则的代码。在网页上处理复杂的字符串的一些需要等等之类。
正则表达式是用于进行文本匹配的一个工具。那么这些复杂的正则表达式就有了束缚规范的一些字符,在正则表达式里称为元字符,还有它的一些语法格式。
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
就是正则表达式所需要用到但元字符,这都是小写的字母,第一个是英文的句号类似于,就是.这个点它就可以匹配除了换行符以外的任意字符。
直接放图片:如
在这里插入图片描述
上面那个点就是元字符,下面的都是需要匹配的内容,注意看在第一行的K后面还有一个L f这个就是换行符了。
元字符说的就是这些,有个转义字符,就是一个斜杠,元字符都是要加个\的才可以是完整的,那么说你就是要查找这个\呢,那这时就要用到字符转义了,
如果说你要查找的就是斜杠,可以\。这样子就可以了
都说了正则表达式是复杂的,那怎么也得要一些重复之类的,如果重复了就是一个新的字符了,叫限定符。

  • 重复零次或更多次
  • 重复一次或更多次
    ? 重复零次或一次
    {n} 重复n次
    {n,} 重复n次或更多次
    {n,m} 重复n到m次
    举个例子,就电话号码一般是十一位数的,这里边就用到了限定符和元字符,那么它的正则表达式是怎样的呢?
    “(d±)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?” //电话号码
    当然正则表达式不是唯一的,你可以优化什么的都可以,每个人的正则可能都不太一样,但用到的还是元字符和限定符。它这些是固定的。但想要灵活应用还得多加练习才可以。当然正则不会这么简单还有其它的一些,还有就是反义,这个就会很好理解。就是跟元字符的意思反过来。
    \W 匹配任意不是字母,数字,下划线,汉字的字符
    \S 匹配任意不是空白符的字符
    \D 匹配任意非数字的字符
    \B 匹配不是单词开头或结束的位置
    [^x] 匹配除了x以外的任意字符
    [^aeiou] 匹配除了aeiou这几个字母以外的任意字符
    这些跟元字符的不同在于这是大写字母,所以意思也是反的,像这个[^aeiou]的意思是匹配除了这几个元音字母以外的21个字母。这个算是比较好理解的了。
    正则表达式呢有很多的种表达,像元字符这样的是基础,但还有其它的分类,还有这个叫注释的,这个也好理解,经常敲代码中不也要注释的嘛,所以在正则表达式中可以添加空白符的,但实际使用呢都会被注释掉不用的。
    例如:
    (?= #断言要匹配的文本后缀
    </\1> #查找尖括号里的内容,前面是个/,后面是先前捕获的标签)结束
    那这里的断言是什么呢,就涉及到正则表达式另一个分类了,叫零宽断言。
    它们像\b,^,$那样用于指定一个位置,这个位置满足一定的条件(断言),因此它们也被称为零宽断言。拿例子来说吧:
    (?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。比如\b\w+(?=ing\b),匹配以ing结尾的单词的前面部分(除了ing以外的部分),如查找I’m singing while you’re dancing.时,它会匹配sing和danc。
    (?<=exp)也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp。比如(?<=\bre)\w+\b会匹配以re开头的单词的后半部分(除了re以外的部分),例如在查找reading a book时,它匹配ading。
    假如你想要给一个很长的数字中每三位间加一个逗号(当然是从右边加起了),你可以这样查找需要在前面和里面添加逗号的部分:((?<=\d)\d{3})*\b,用它对1234567890进行查找时结果是234567890。
    这是零宽断言,但我也不太熟悉,也是瞎搬的。还有一个负向零宽断言
    但是如果我们只是想要确保某个字符没有出现,但并不想去匹配它时怎么办?负向零宽断言能解决这样的问题,因为它只匹配一个位置,并不消费任何字符。
    总结:
    这只是对一部分正则表达式的一点简单理解,没有做什么是容易的,对正则表达式会用到,目前来说用到的频率很大,所以会花多一些时间去了解正则表达式,还要一点一点的觉得自己学到了,在进步。
    最后还要继续保持对学习的热情。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值