这两个正则有啥区别,为什么第一个会匹配到 @ 和 = ,而将 \\ 后置后则正常?-灵析社区

周舟莫UI设计

这两个正则有啥区别,为什么第一个会匹配到 @ 和 = ,而将 \ 后置后则正常? /^[\u4e00-\u9fa5a-zA-Z0-9,-\\/ :、\.]{0,50}$/.test("@") // 为什么为true? /^[\u4e00-\u9fa5a-zA-Z0-9,-/ :、\.\\]{0,50}$/.test("@") // 正常

阅读量:15

点赞量:0

问AI
你这个发出来的应该经过转义了,不是原本的正则吧,用我看到的上面是false,下面报错 "image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241030/b18ed3dbc5ff1995996bcf9795208037.png) 不过可以猜到,主要原因在于"-"是字符范围,比如"0-9"表示"0123456789"9个数,"a-z"表示"abcd....z"。他们在匹配的时候是根据字符在ASCII码中的大小进行匹配的,比如"'@'.charCodeAt()"是64,"','.charCodeAt()"是44,"'/'.charCodeAt()"是47,64不在44到47内,就匹配不上 "image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241030/83db2df1cbb53a78e8aa9a47a56eb78d.png)