正则表达式Javascript-我做错了什么?

正则表达式Javascript-我做错了什么?,javascript,regex,Javascript,Regex,我将此模式存储在变量中: var regexServer = /^([0-9]{2,3})+\.([0-9]{2,3})+\.([0-9]{2,3})+\.([0-9]{2,3})+\:[0-9]{2,4}$/; if(!stringFromArgument.match(regexServer)) alert("You must input a valid IP and a Port address! Eg: 66.77.88.99:8000"); 我检查了来自输入(表单)的字符串,结

我将此模式存储在变量中:

var regexServer = /^([0-9]{2,3})+\.([0-9]{2,3})+\.([0-9]{2,3})+\.([0-9]{2,3})+\:[0-9]{2,4}$/;

if(!stringFromArgument.match(regexServer))
   alert("You must input a valid IP and a Port address! Eg: 66.77.88.99:8000");
我检查了来自输入(表单)的字符串,结果没有问题

如果有人想添加自己的IP和端口地址,他必须添加一个有效的表单。他的字符串只能包含
,数字,不能包含空格

我做错了什么?你有什么问题

我看到两件事

/^([0-9]{2,3})+\.([0-9]{2,3})+\.([0-9]{2,3})+\.([0-9]{2,3})+\:[0-9]{2,4}$/
              ^              ^              ^              ^
                                                            ^
  • 我第一行标记中的量词是错误的
  • 不需要第二行中标记的转义,因为“:”不是特殊字符
    • 你有什么问题

      我看到两件事

      /^([0-9]{2,3})+\.([0-9]{2,3})+\.([0-9]{2,3})+\.([0-9]{2,3})+\:[0-9]{2,4}$/
                    ^              ^              ^              ^
                                                                  ^
      
      • 我第一行标记中的量词是错误的
      • 不需要第二行中标记的转义,因为“:”不是特殊字符

      您接受从10到255的IP号码,也许您应该将量词从{2,3}更改为{1,3},否则将拒绝128.0.0.1:80之类的IP地址。

      您接受从10到255的IP号码,也许您应该将量词从{2,3}更改为{1,3},否则像128.0.0.1:80这样的IP地址将被拒绝。

      我认为您的RegExp无法工作,因为
      +
      字符

      在我看来,这应该是一个更有效的正则表达式:
      /^([0-9]{1,3}(\.?){4}:[0-9]{2,5}$/


      您应该为每个级别允许1个数字。例如:
      82.176.103.6
      如果不匹配,则不匹配。另外,端口的数量应该是5,因为最大端口号是
      65535

      我认为您的RegExp无法工作,因为
      +
      字符

      在我看来,这应该是一个更有效的正则表达式:
      /^([0-9]{1,3}(\.?){4}:[0-9]{2,5}$/

      您应该为每个级别允许1个数字。例如:
      82.176.103.6
      如果不匹配,则不匹配。此外,端口的数量应该是5,因为最高端口号是
      65535

      首先,如果您只是测试,则无需输入
      (…)+
      。 您还将第3个和第4个数字限制为2+,但可能有数字低于10,端口可能大于9999

      var regexServer = /^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\:[0-9]{2,4}$/
      
      此外,此正则表达式仅检查格式是否正确,但不验证ip(检查数字是否在0-255之间)。这里还有一些正则表达式(无需端口检查,您可以自行添加):

      首先,如果您只是测试,则无需放置
      (…)+
      。 您还将第3个和第4个数字限制为2+,但可能有数字低于10,端口可能大于9999

      var regexServer = /^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\:[0-9]{2,4}$/
      
      此外,此正则表达式仅检查格式是否正确,但不验证ip(检查数字是否在0-255之间)。这里还有一些正则表达式(无需端口检查,您可以自行添加):


      请提供失败的示例输入注意,IP地址中只有一个数字是完全正常的,例如
      66.77.88.1
      。您的
      {2,3}
      子句限制太多。此外,可接受的端口范围为1-65535,因此
      {1,5}
      数字,而不是
      {2,4}
      。请提供您正在使用的示例输入,该输入失败请注意,IP地址中只有一个数字是完全正常的,例如
      66.77.88.1
      。你的
      {2,3}
      子句太严格了。另外,可接受的端口范围是1-65535,所以
      {1,5}
      数字不是
      {2,4}
      +1而是
      ^(\d{1,3}[\.:]){4}\d{2,5}$
      可能更好,因为当前的正则表达式也匹配
      66.778899:8000
      @micha非常好,+1!但是,您的查询也将匹配
      11:22:33:44
      )+但是
      ^((\d{1,3})[\.:]){4}\d{2,5}$
      可能更好,因为当前正则表达式也匹配
      66.778899:8000
      @micha非常好的点,+1!但是,您的查询也将匹配
      11:22:33:44
      )谢谢回复!我完全糊涂了。。。我从一开始就开始了一切,并尝试了以下方法:var regexServer=/^[0-9]\.[0-9]\.[0-9]\.[0-9]\.[0-9]:[0-9]$/;我只想允许正确的IP和端口地址如下:88.77.66.55:8000对不起,我的英语很差,但我膝盖上有一支箭…谢谢回复!我完全糊涂了。。。我从一开始就开始了一切,并尝试了以下方法:var regexServer=/^[0-9]\.[0-9]\.[0-9]\.[0-9]\.[0-9]:[0-9]$/;我只想允许正确的IP和端口地址如下:88.77.66.55:8000对不起,我的英语很差,但我膝盖上有一支箭。。。