Javascript 是否拒绝parseInt接受的某些数字字符串?

Javascript 是否拒绝parseInt接受的某些数字字符串?,javascript,Javascript,问题是接受一个或多个端口之间有一个空间 在朋友的帮助下 ,我用这个作为我的答案 但例如,如果我输入88888,它会提醒我这样的事情: 88888NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN is not correct 我怎样才能纠正这个问题 <script type="text/javascript"> function portvalidating(field) { var output=''; m=field

问题是接受一个或多个端口之间有一个空间

在朋友的帮助下 ,我用这个作为我的答案 但例如,如果我输入88888,它会提醒我这样的事情:

88888NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN is not correct
我怎样才能纠正这个问题

<script type="text/javascript">
    function portvalidating(field)
    {
    var output='';
        m=field.value;
        if(/^\d{1,5}([ ]\d{1,5})*$/.test(m))
        {
        var parts = m.split(' ');
        for(i in parts)
        {
          var p= parseInt(parts[i]);
        if(!((0 <= p) && (p<= 65535) && !isNaN(p)))
        {
        output+=p;
        }
        }
    if(output=='')
        var dummy=1;
        else alert(output+'is not correct');
        }
        else alert('please enter a valid port!');
        }

功能端口验证(字段)
{
var输出=“”;
m=字段值;
if(/^\d{1,5}([]\d{1,5})*$/.test(m))
{
var部分=m.分割(“”);
(i部分)
{
var p=parseInt(第[i]部分);

如果(!((0)是值得的,这里是我的“答案”。它与发布的代码非常接近,但正如所指出的那样存在差异。用一篇文章完成

//返回:{端口,无效}
//其中端口为有效端口,无效端口为…无效项。
函数getPorts(inp){
var无效=[];
var端口=[];
///\s+/确保跳过多个空格。
var split=inp.split(/\s+/);
对于(变量i=0;i=0&&val 0),则它包含一些“无效”项。
//如果r.ports.length==0,则它也可能是“无效的”
var r=getPorts(“88888 Nannan”);
警报(“端口:+r.ports”);
警报(“无效:+r.invalid”);
var r=getPorts(“123 12345 888 NaN 1d234”);
警报(“端口:+r.ports”);
警报(“无效:+r.invalid”);
快乐编码



请按照maerics的帖子将其放入函数中。

关于它的价值,这里是我的“答案”。它与发布的代码非常接近,但正如所述存在差异。请用帖子完成

//返回:{端口,无效}
//其中端口为有效端口,无效端口为…无效项。
函数getPorts(inp){
var无效=[];
var端口=[];
///\s+/确保跳过多个空格。
var split=inp.split(/\s+/);
对于(变量i=0;i=0&&val 0),则它包含一些“无效”项。
//如果r.ports.length==0,则它也可能是“无效的”
var r=getPorts(“88888 Nannan”);
警报(“端口:+r.ports”);
警报(“无效:+r.invalid”);
var r=getPorts(“123 12345 888 NaN 1d234”);
警报(“端口:+r.ports”);
警报(“无效:+r.invalid”);
快乐编码



请按照maerics的帖子将其放入函数中。

尝试将读/写表单数据的关注点从输入验证和警报中分离出来。以下是验证[0..65535]中以空格分隔的整数字符串的函数提示:

var getPorts=function(str){
变量ns=(“”+str).split(/\s+/),端口=[],n,i;
对于(i=0;i=0)和&(n[012525]

尝试将读/写表单数据的关注点从输入验证和警报中分离出来。以下是验证[0..65535]中空格分隔整数字符串的函数提示:

var getPorts=function(str){
变量ns=(“”+str).split(/\s+/),端口=[],n,i;
对于(i=0;i=0)和&(n[012525]

对于这样的问题,请考虑列出多个“好数据”和“坏数据”的例子。(这个特定的检查可以简单地用简单的正则表达式进行,而不需要进行范围检查:需要更多的时间来进行范围检查)。谢谢,对不起,我不明白,现在我必须做什么,我认为这个检查是工作,但我不能得到88888个原因,它是88888南,通常VARS去PARSENT有价值南南……(不是数字)这样的问题,考虑列出多个例子的“好数据”和“坏数据”。(这个特殊的检查可以用一个简单的正则表达式来完成,而不需要范围检查:需要更多的时间来完成范围检查。)谢谢,对不起,我不明白现在我必须做什么我认为这个检查是有效的,但我不能得到888,因为它是888 NaN,通常通过去parseint有值NaNaN…(不是一个数字)哇,非常巧妙地使用了
ns[I]==n
--第一次就漏掉了。值得特别一提。千万别忘了把基数传递给
parseInt
,在这种情况下应该是
10
。也许我漏掉了什么,但是你用
ns[I]==n
做什么呢?注意:
getport('-1 08 09 NaN 123 foo 255 99999');
将返回
[123,255]
这里。最好使用
Number(ns[i])
parseInt(ns[i],10)
Wow。非常巧妙地使用
ns[i]==n
--第一次就漏掉了。值得特别一提。千万别忘了把基数传递给
parseInt
,在这种情况下应该是
10
。也许我漏掉了什么,但是你用
ns[I]==n
做什么呢?注意:
getport('-1 08 09 NaN 123 foo 255 99999');
将返回
[123,255]
这里。最好使用
Number(ns[i])
parseInt(ns[i],10)
// Returns: {ports, invalid}
// where ports are valid ports and invalid are ... not valid items.
function getPorts (inp) {
    var invalid = [];
    var ports = [];
    // The /\s+/ ensures that multiple whitespace is skipped.
    var split = inp.split(/\s+/);
    for (var i = 0; i < split.length; i++) {
        var str = split[i];
        // It is generally best to *always* specify a base.
        // (Otherwise it might be treated as hex or octal, which may or
        // may not be okay. Adjust as required.)
        var val = parseInt(str, 10);
        // Need to make sure we have all digits.
        // This is because parseInt("1foo2", 10) evaluates to 1
        // and parseInt("8888NaN") evaluates to 8888
        if (!str.test(/^\d+$/) || !(val >= 0 && val <= 0xffff)) {
            invalid.push(str);
        } else {
            ports.push(val);
        }
    }
    return {ports: ports, invalid: invalid};
}

// if r.invalid.length > 0 then it contained some "invalid" items.
// it may also be "invalid" if r.ports.length == 0

var r = getPorts("88888NaNNaN");
alert("ports: " + r.ports);
alert("invalid: " + r.invalid);

var r = getPorts("123 12345 88888 NaN NaN 1d234");
alert("ports: " + r.ports);
alert("invalid: " + r.invalid);