本文教程操作环境:windows7系统、jquery3.2.1版本,DELL G3电脑。
在我们对字符串进行处理的时候,频繁的会用到一种规则,即正则的理念。有些人并不能清楚的表述出正则的原理,但是对于用法方面多多少少的有一些了解。学习一个新知识点,当然要先从它的原理开始。我们在简单讲述正则概念后,就讲一讲正则中回溯法的原理吧。
1.正则概念
用来「处理字符串」的一种规则。他是一个「规则」:可以验证字符串是否符合某个规则(test),也可以把字符串中符合规则的内容捕获到(exec/match...)
2.正则回溯法原理
回溯法也称试探法,它的基本思想是:从问题的某一种状态(初始状态)出发,搜索从这种状态出发所能达到的所有“状态”,当一条路走到“尽头”的时候(不能再前进),再后退一步或若干步,从另一种可能“状态”出发,继续搜索,直到所有的“路径”(状态)都试探过。这种不断“前进”、不断“回溯”寻找解的方法,就称作“回溯法”。(copy于百度百科)。
本质上就是深度优先搜索算法。其中退到之前的某一步这一过程,我们称为“回溯”。从上面的描述过程中,可以看出,路走不通时,就会发生“回溯”。即,尝试匹配失败时,接下来的一步通常就是回溯。
(1)没有回溯的匹配
当目标字符串是"abbbc"时,就没有所谓的“回溯”。其匹配过程是:
(2)有回溯的匹配
如果目标字符串是"abbc",中间就有回溯。
以上就是js正则中回溯法的原理,分为没有回溯的匹配和有回溯的匹配,如果看了不会很明白,可以结合上方的图片进行理解。