/^(\W*\w+\W*){0,50}$/
仔细看看你的正则\W*匹配任何非单词字符 0次或多次
\w+匹配包括下划线的任何单词字符 1次或多次
\W*匹配任何非单词字符 0次或多次
{0,50}出现最少匹配 0 次且最多匹配 50 次
/^(多次字符){0,50}$/ 无限多字符
最后结论:/^(\W*\w+\W*){0,50}$/ 正则就是无限多个字符都符合
所以是死循环
仔细看看你的正则\W*匹配任何非单词字符 0次或多次
\w+匹配包括下划线的任何单词字符 1次或多次
\W*匹配任何非单词字符 0次或多次
{0,50}出现最少匹配 0 次且最多匹配 50 次
/^(多次字符){0,50}$/ 无限多字符
最后结论:/^(\W*\w+\W*){0,50}$/ 正则就是无限多个字符都符合
所以是死循环
<script language="JavaScript">
var str="1234567890 ,.bbbbbbbbbbccccccccccddddddddddeeeeeeeeeefffgg";
var reg=/.{0,50}/ig
var arr = str.match(reg);
alert(arr[0]);
</script>就算像你上面这样写也不会有死循环只是不限长度了。
其实根本用不到正则,你直接把取到的值做下判断 str.length < 50 不就好了。