js正则表达式零宽断言

                                     js正则表达式零宽断言

一:正则表达式引入原因:

我们开发网站需要对一些前台传过来的字符串进行检验,比如检验用户输入的用户名是否合法,电话号是否合法,用户

的邮箱是否合法等。我们可以自己写个函数进行检验。但是过于繁琐,这时候我们可以用正则表达式进行检验。能够准确

的检验出用户输入的邮箱是否合法,如果不合法反馈给用户。

二:正则表达式的创建方式:

1:字面量方式:var reg=/pattern/flags;                                        //(这种方式下不能拼接字符串.)

2:构造函数方式:var reg = new RegExp(pattern,flags);             //(这种方式下需要转义,\d==d,\\d=\d.)

个人建议用字面量方式,很多字符串需要转义的话看着比较乱。

pattern:正则表达式

 flags:标识(修饰符)

标识主要包括:

1. i 忽略大小写匹配

2. m 多行匹配,即在到达一行文本末尾时还会继续寻常下一行中是否与正则匹配的项

3. g 全局匹配 模式应用于所有字符串,而非在找到第一个匹配项时停止

三:正则表达式的元字符:

代表特殊含义的元字符:

\d : 0-9之间的任意一个数字  \d只占一个位置
\w : 数字,字母 ,下划线 0-9 a-z A-Z _
\s : 空格或者空白等
\D : 除了\d
\W : 除了\w
\S : 除了\s
 . : 除了\n之外的任意一个字符
 \ : 转义字符
 | : 或者
() : 分组
\n : 匹配换行符
\b : 匹配边界 字符串的开头和结尾 空格的两边都是边界 => 不占用字符串位数
 ^ : 限定开始位置 => 本身不占位置
 $ : 限定结束位置 => 本身不占位置
[a-z] : 任意字母 []中的表示任意一个都可以
[^a-z] : 非字母 []中^代表除了
[abc] : abc三个字母中的任何一个 [^abc]除了这三个字母中的任何一个字符

代表次数的量词元字符:

* : 0到多个
+ : 1到多个
? : 0次或1次 可有可无(防止正则表达式的贪婪性)。
{n} : 正好n次;
{n,} : n到多次
{n,m} : n次到m次

在介绍零宽断言之前我们前简单实现下利用正则表达式判断用户输入的邮箱是否合法。

<html>
    <body>
        <script>
            var str = "10086@qq.com"
            var reg = /\d+@\w+\.[c][o][m]/g;
            var flag=str.match(reg);
            alert(flag);
            </script>
    </body>
</html>

这就是正则表达式的强大之处,能够简单的几行代码就可以匹配到你想要的字符串,然后介绍我们今天要说的零宽断言

四:零宽断言

  • 零宽度正预测先行断言 (?=exp)                                       //判断正则表达式中?的位置的右边符合表达式的条件。
  • 零宽度负预测先行断言 (?!exp)                                        //判断正则表达式中?的位置的右边不符合表达式的条件。
  • 零宽度正回顾后发断言 (?<=exp)                                     //判断正则表达式中?的位置的左边符合表达式的条件。
  • 零宽度负回顾后发断言 (?<!exp)                                      //判断正则表达式中?的位置的左边不符合表达式的条件。

还有一点需要注意如果我们调用字符串的match函数,不会返回零宽断言后面符合条件的字符串。这也是上面说位置而

不是字符串的原因。

首先我们先记住这个形式,然后我们来举个例子实践一下。

<html>
    <body>
        <script>
            var str = "10086@qq.com"
            var reg = /\d+@(?=qq)/
            var flag=str.match(reg);
            alert(flag);
            </script>
    </body>
</html>

参考资料:JavaScript RegExp 正则表达式基础详谈https://www.cnblogs.com/mq0036/p/6013225.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值