正则表达式处理的基本步骤
1、编译
当创建一个正则表达式之后,浏览器会对其进行一些列的操作(检测语法、转换成一个本机代码例程(嘿嘿,不明白))。因此在重复多次使用同一个正则表达式时,最好将其赋值给一个变量,从而跳过浏览器的这一系列重复操作。
2、设置起始位置
字符串的起始位置,或者由正则表达式的lastIndex属性指定的位置。
3、匹配每个正则表达式的字元
扫描目标文本和正则表达式模板,当一个特定的字元匹配失败时,回到起始位置尝试其它可能的路径
4、匹配成功或者失败
示例:
/h(ello|appy) hippo/.test("hello there, happy hippo");
此正则表达式匹配hello hippo或者happy hippo,它首先查找h,发现字符串的第一个字符就是h。接下来尝试匹配子表达式的第一个,也就是ello,结果也成功了。接着又匹配了后面的空格,但是在继续匹配hippo时失败了。于是它回到匹配了第一个h的地方开始尝试匹配第二个分支appy,结果失败了。于是它放弃匹配的第一个h,开始匹配字符串中的下一个h,重复之前的操作。