Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在textarea中获得最大的号码?_Javascript_Jquery_Regex - Fatal编程技术网

Javascript 如何在textarea中获得最大的号码?

Javascript 如何在textarea中获得最大的号码?,javascript,jquery,regex,Javascript,Jquery,Regex,我有这样一个文本区: <textarea> this is a test [1] also this [2] is a test and again [3] this is a test </textarea> 这是一个测试[1]这[2]也是一个测试 这又是一次考验 现在我需要得到[]中的最大数字。在这种情况下,我需要获得3。我该怎么做?您可以: var result = Math.max.apply(Math, textarea.value.match(/\d+/

我有这样一个文本区:

<textarea>
this is a test [1] also this [2] is a test
and again [3] this is a test
</textarea>

这是一个测试[1]这[2]也是一个测试
这又是一次考验
现在我需要得到
[]
中的最大数字。在这种情况下,我需要获得
3
。我该怎么做?

您可以:

var result = Math.max.apply(Math, textarea.value.match(/\d+/g).map(Number));
分解它:

textarea.value.match(/\d+/g)
获取作为字符串的数字数组

.map(Number)
将数组的每个条目从字符串映射到数字

Math.max.apply
调用
Math.max
,将
this
作为
Math
和映射数组的参数

编辑:我不知道你需要的东西必须放在括号中。你需要使用一个捕获组来完成这个任务,现在有点复杂了

var reg = /\[(\d+)\]/g, numberStrings = [ ], match;
while((match = reg.exec(textarea.value)) !== null){
    numberStrings.push(match[1]);
}

var result = Math.max.apply(Math, numberStrings.map(Number));
获取带有数字的字符串数组有点棘手

另一种选择,不使用捕获组:

var numbersInBrackets = textarea.value.match(/\[\d+\]/g);
var numbers = numbersInBrackets.map(function(x) {
    return Number(x.substring(1, x.length - 1));
});
var result = Math.max.apply(Math, numbers);

和四号减员的解决方案一样。使用jQuery,但不使用jQuery也可以轻松完成

var content = $('textarea').val();
var contentArr = content.split(' ');
var nums = [];

for (var i = 0; i < contentArr.length; i++) {
  var txt = contentArr[i];
    if (txt.match(/[\d]/)) {
    nums.push(Number(txt.slice(1,-1)));
  }
}

// Max number is Math.max.apply(null, nums)
var content=$('textarea').val();
var contentArr=内容分割(“”);
var nums=[];
对于(变量i=0;i

完全工作。

使用此函数查找任何字符串中最大的
[数字]

var biggestNumber = function(str) {
    var pattern = /\[([0-9]+)\]/g, match, biggest = 0;

    while ((match = pattern.exec(str)) !== null) {
        if (match.index === pattern.lastIndex) {
            pattern.lastIndex++;
        }
        match[1] = parseInt(match[1]);
        if(biggest < match[1]) {
            biggest = match[1];
        }
    }
    return biggest;
}
var biggestNumber=函数(str){
var模式=/\[([0-9]+)\]/g,匹配,最大值=0;
while((match=pattern.exec(str))!==null){
if(match.index==pattern.lastIndex){
pattern.lastIndex++;
}
match[1]=parseInt(match[1]);
如果(最大值<匹配[1]){
最大=匹配[1];
}
}
回报最大;
}

演示 下面的演示将计算每次单击按钮时文本区域中的最大数字

它允许您使用textarea,并使用不同的文本重新测试函数

var biggestNumber=函数(str){
var模式=/\[([0-9]+)\]/g,匹配,最大值=0;
while((match=pattern.exec(str))!==null){
if(match.index==pattern.lastIndex){
pattern.lastIndex++;
}
match[1]=parseInt(match[1]);
如果(最大值<匹配[1]){
最大=匹配[1];
}
}
回报最大;
}
document.getElementById(“myButton”).addEventListener(“单击”,函数(){
警报(最大编号(document.getElementById(“myTextArea”).value));
});

这是一个测试[1]这[2]也是一个测试
这又是一次考验
试试我

您需要执行两个操作:

  • 使用获取所有
    [(数字)]
  • 从结果数组中获取最大值(请参见)
Array.max=函数(数组){
返回Math.max.apply(数学,数组);
};
var re=/\[(\d+)]/g;
var str='这是一个测试[1],这[2]也是一个测试\n而且[3]这也是一个测试';
变量数=[]
while((m=re.exec(str))!==null){
push(Number(m[1]));
}

document.write(Array.max(number))获取字符串变量中textarea的值,使用正则表达式提取[]中的值,将它们解析为数字,然后对它们进行排序并获得最高值。很好的解释。。。远不止“试试这个”+1这种方法的一个问题是它无法获取
[…]
中的数字。如果存在的话,它会考虑所有其他的。总的想法很好,只需要再多几行就可以得到正确的数字。我明白了,我会为此添加一个注释。@MinusFour谢谢你…等待你的编辑。。我想你必须编辑你的正则表达式…
。map(Number)
不是必需的。根据报告:。。。对每个参数调用ToNumber