HcySunYang / vue-design

📖 master分支:《渲染器》
http://hcysun.me/vue-design/zh/
6k stars 916 forks source link

关于渲染器挂载的正则疑问 #278

Closed NameWjp closed 3 years ago

NameWjp commented 4 years ago

正则代码为 const domPropsRE = /\[A-Z]|^(?:value|checked|selected|muted)$/ 不太明白这里[A-Z]前面为什么要加转义符 \ 而且加了后无法匹配 innerHTML 字符 感觉这里的转义符是多余的,作者笔误了,还是另有说法?

luwuer commented 3 years ago

不是转义字符,是正则字面量,两根 / 之间就是初始化正则的内容。

另:转义字符是反斜杠

NameWjp commented 3 years ago

@luwuer 好久前看的文章了,我重新查看了下原文章,确实[A-Z]前面有转义符,原文的正则如下: const domPropsRE = /\[A-Z]|^(?:value|checked|selected|muted)$/

luwuer commented 3 years ago

噢噢,我看了你说的文章,估计写错了吧,就算没有转义符也不符合他的描述

它还能匹配那些拥有大写字母的属性,这是为了匹配诸如 innerHTML、textContent 等属性

NameWjp commented 3 years ago

@luwuer 我觉得去掉转义是正确的,去掉后的含义是匹配属性里有大写字母的或者这些属性(value|checked|selected|muted)中的一个,符合文章中说的话(它还能匹配那些拥有大写字母的属性,这是为了匹配诸如 innerHTML、textContent 等属性)。

luwuer commented 3 years ago

/[A-Z]/ 只能保证字符串含有大写字母,但包含不代表正确,比如 c A c 等非法属性。