javascript代码实例教程-正则表达式的或(|)(一个烂正则表达式引发的博客)

发布时间:2019-04-11 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-正则表达式的或(|)(一个烂正则表达式引发的博客)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

如题,我很荣幸的宣布,这个烂正则表达式的作者是我。

于Unix的正则表达式一直是字符串处理的瑞士军刀,今天用这刀写了一段程序,结果与预期的不相符。如下

/^Task0|Task1|Task10$/

这个正则表达式我期待的结果是只匹配Task0、Task1、Task10三者之一,然而它却能匹配Task11、Task12等任何以Task1开头的字符串。

同事说这个正则表达式匹配的应该是TaskTaskTask10这样的字符串,显然是不对的,不要再糊涂了。|(或)的含义是匹配其左侧或者右侧的表达式,不是字符。


而如下的正则表达式却能得到预期的结果

/^(Task0|Task1|Task10)$/


这两个正则表达式什么区别?

咋一看,一样吧?


先说|(或)的定义,如下:

|(或)代表左右表达式任意匹配一个。它总是先尝试匹配左边的表达式,一旦成功则跳过匹配右边的表达式。如果|没有被包括在小括号括号()中,则它的范围是整个正则表达式。


现在看看/^Task0|Task1|Task10$/是如何匹配的,假如测试的字符串是Task11。

1、先用^Task0测试,看Task11是否满足以Task0作为开始,测试结果为不满足。

2、用Task1测试Task11,看Task11中是否包含Task1,测试结果为满足,测试结束,测试的最终结果的匹配。


看看/^(Task0|Task1|Task10)$/是如何匹配的,仍假设测试字符串为Task11。

1、测试Task11是否以Task0、Task1、Task10三者之一开头,测试结果为满足以Task1开头。

2、之后是一个$符号,要求字符串结束。也就是说仅仅匹配Task0、Task1、Task10三者之一,所以测试结果是不匹配。

一不留神写错了,在这里做个简单的记述,算是给大家提个醒,更是给自己提个醒。

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-正则表达式的或(|)(一个烂正则表达式引发的博客)全部内容,希望文章能够帮你解决javascript代码实例教程-正则表达式的或(|)(一个烂正则表达式引发的博客)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。