对网址或IP地址进行字段验证

时间:2017-03-31 19:12:48

标签: angularjs validation

目前,我发现了一个似乎正在做的事情的正则表达式here,并在regex101上传递了一些测试。但是,相同的表达式在角度ng-pattern中不起作用:

这是表达式:

/^(http(s?):\/\/)?(((www\.)?+[a-zA-Z0-9\.\-\_]+(\.[a-zA-Z]{2,3})+)|((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))(\/[a-zA-Z0-9\_\-\s\.\/\?\%\#\&\=]*)$/?
.

产生此错误:

Invalid regular expression: /^(http(s?)://)?(((www.)?+[a-zA-Z0-9.-_]+(.[a-zA-Z]{2,3})+)|((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0…){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))(/[a-zA-Z0-9_-s./?%#&=]*)?$/: Nothing to repeat
.

也许我已经走得太远了,不需要正则表达式。是否有适合接受URL和IP地址的东西?

1 个答案:

答案 0 :(得分:1)

看起来像\消失,尝试使用像这样的双反斜杠

^(http(s?):\\/\\/)?(((www\\.)?+[a-zA-Z0-9\\.\\-\\_]+(\\.[a-zA-Z]{2,3})+)|(\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b))(\\/[a-zA-Z0-9\\_\\-\\s\\.\\/\\?\\%\\#\\&\\=]*)?$

这是因为反斜杠在字符串中被解释为转义字符。