找出字符串中最长的字符串有个问题

找出字符串中最长的字符串
function func(str)
{var arr=str.match(/\w+/g);
var longgest=0;
for(var i=0;i<arr.length;i++)
if(longgest<arr[i].length)
longgest=arr[i].length;
chararr=str.match(/\w{longgest}/g);
alert( longgest+chararr);
    }

func("Write a simple function (less than 80 characters) that returns a boolean indicating whether or not a string is a palindrome.");//为什么只显示10呢?应该后面还有对应的字符串数组啊?

阅读 3.6k
4 个回答

因为下面这一句没有匹配到内容,chararr的值是null。

chararr=str.match(/\w{longgest}/g);

function func (str) {
    var words = str.split(/[^\w]/g);
    words.sort(function (wordA, wordB) {
         return wordA.length < wordB.length;
    });
    return words[0].length + ':' + words[0]; 
}
func('hello world hahahaha!');

试试这个,你的代码有问题

动态的正则表达式要用 RegExp

var re=new RegExp('\\w{'+longgest+'}','g');
var chararr=re.exec(str);
function func(str) {
    var arr=str.match(/\w+/g);
    var longgest=0;
    for(var i=0;i<arr.length;i++){
        if(longgest<arr[i].length){
            longgest=arr[i].length;
        }
    }
    var reg = new RegExp("\\w{" + longgest + "}", "g");
    chararr=str.match(reg);
    console.log(chararr);
    console.log( longgest+chararr);
}

上面的代码是根据题主的需求实现的功能。
在正则表达式中想使用变量,需要用new构造一个正则表达式,否则无法解析变量。

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