正则表达式dotall用s、sticky用y的历史原因是什么?
正则表达式
s(dotall)和y(sticky)标志的历史原因 关于s(dotall)标志
- 这个标志的用法是沿用了Perl正则的传统。早在Perl的正则实现里,就用
/s修饰符来让.匹配包括换行符在内的所有字符,对应"singleline"模式(后来也被称为dotall)。ECMAScript在引入该特性时,直接借鉴了Perl的这一约定,没有选用Dotall的首字母D——一方面是为了和主流正则实现的使用习惯保持一致,另一方面D在部分正则方言中已有其他用途(比如Perl里/D用于匹配非数字),避免功能冲突。
关于y(sticky)标志
sticky是ES6新增的特性,它的首字母s已经被dotall标志占用,所以需要从剩余未被使用的字母里选择。当时可选字母有限(g/i/m/u已被占用),最终选定y主要有两点原因:- 首先
y未被其他正则标志占用,不会和既有功能产生冲突; - 其次它能和全局标志
g形成明显区分——sticky的核心是锚定上次匹配的结束位置,和g的全局匹配行为差异很大,独特的字母能减少使用时的混淆。
- 首先
内容的提问来源于stack exchange,提问作者Ádám Bozzay
相关产品推荐
相关产品推荐

