当前位置: 首页 > 知识库问答 >
问题:

javascript - 为什么这3行代码一运行网页就会崩溃?

林弘文
2023-08-05

为什么这3行代码一运行网页就会崩溃

const value = '                                         'const reg = new RegExp('^(.|\\s){0,40}$')const isPass = reg.test(value)

完整html

<!doctype html><html><head><meta charset="utf-8"><title></title><style></style></head><body>页面  <script>    const value = '                                         '    const reg = new RegExp('^(.|\\s){0,40}$')    const isPass = reg.test(value)  </script></body></html>

共有1个答案

靳金鹏
2023-08-05

主要是 js 线程卡死了,你把正则换成 new RegExp('^\s{0,40}$') 就行了

还有,锚点 ^$ 是要求同时满足的,也就是上面这个写法虽然能运行,但会返回 false

这两个锚点 共同 限定了整个字符串的开头和结尾,要求字符串中没有其他字符,只能是空白符。因此,如果匹配字符串中 只包含 空白符,并且没有其他字符,那么正则表达式 无法匹配 整个字符串(因为可以认为总是只满足了 ^ 的规则),返回结果就是 false

如果要匹配 40 个空格可以考虑只选一边 new RegExp('^\s{0,40}')

 类似资料: