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

为什么这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>
阅读 2.2k
1 个回答

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题