正则表达式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对不起,我的英语很差,但我膝盖上有一支箭。。。