JavaScript正则 或问题

看了正则 或表达式的一些方法發现有个lastIndex,它表示下次匹配从字符串的第几个字符开始初始值是0;当我用了全局g的时候。如果匹配成功则lastIndex变成匹配字符串后面的位置,如果没有匹配成功则lastIndex重置为0;lastIndex是正则 或对象的属性,不关心字符串是否是同一个所以即使匹配的字符串在变,lastIndex也不会清零如下图

攵章来源:segmentfault,作者:徐鹏云如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:(邮箱中#请改为@)进行举报并提供相关证据,┅经查实本社区将立刻删除涉嫌侵权内容。
}

首先说一下零宽: 只匹配位置, 不匹配字符, 在正则 或表达式被称之为anchor, 在实际匹配中, 我们经常看到的是如下:

然后我们再来谈单词边界:

何谓单词? 在JS中, 单词的定义就是\w, 非单词的定义僦是\W, 非常简洁.

何谓边界? 不同为之界. \w界\W, 也就是在这个位置之前是单词, 那么在这个位置之后就是非单词, 反之也是这样.

从上图可以看到, 在开头和結尾各有一个单词边界, 因为开头处, 边界的右端是单词, 而左端不是, 二者不同, 所以就有一个单词界限.

在My的结尾处也有一处界限, 因为在界限的左端是单词y, 右端是空格, 二者不同, 所以是界限.

何谓非边界? 同类无界. \w\w 或者 \W\W, 这个位置前后都是同类, 所以就没有界这一说.

单词和单词是同类, 之间无界限, 所以我们可以看到每个字母之间都是非界限.

在cat后面有两个空格, 两个非单词也是同类, 所以中间有一个非界限.

}

我要回帖

更多关于 什么是正则 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信