首页 > 解决方案 > URL验证正则表达式在打字稿中给出错误

问题描述

我正在尝试在打字稿中验证 URL,但是每当在 UI 中加载输入文件时,我都会遇到以下错误。

ERROR SyntaxError: Invalid regular expression: /^((https|http|ftp|smtp)://)?(www.)?[a-z0-9]+(.[a-z]{2,}){1,3}(#?/?[a-zA-Z0-9#]+)*/?(?[a-zA-Z0-9-_]+=[a-zA-Z0-9-%]+&?)?$/: Invalid group
    at new RegExp (<anonymous>)
    at Function.pattern (forms.js:1372)
    at SystemSettingsComponent.changeKeys (system-settings.component.ts:133)
    at Object.eval [as handleEvent] (SystemSettingsComponent.html:37)
    at handleEvent (core.js:43993)
    at callWithDebugContext (core.js:45632)
    at Object.debugHandleEvent [as handleEvent] (core.js:45247)
    at dispatchEvent (core.js:29804)
    at core.js:42925
    at HTMLSelectElement.<anonymous> (platform-browser.js:2668)

我正在使用的正则表达式如下

^((https|http|ftp|smtp):\/\/)?(www.)?[a-z0-9]+(\.[a-z]{2,}){1,3}(#?\/?[a-zA-Z0-9#]+)*\/?(\?[a-zA-Z0-9-_]+=[a-zA-Z0-9-%]+&?)?$

我尝试了许多不同的正则表达式,但在每个用于 URL 验证的正则表达式中我都面临同样的问题。

测试 URL 参数是:

http://www.testdomain.site.com

https://www.testdomain.site.com

domain.testsite.com

http://www.testsite.com/path/to/dir/

https://www.testsite.com/path/to/dir/

标签: regexurl

解决方案


尝试

^((https|http|ftp|smtp):\/\/)?(www.)?[a-z0-9]+(.[a-z]{2,}){1,3}(#?\/?[a-zA-Z0-9#]+)*\/?(?:[a-zA-Z0-9-_]+=[a-zA-Z0-9-%]+&?)?$

/您至少在错误中显示的正则表达式中有未转义的字符,并且:旁边缺少?,这只是建议,但这会将其转换为非捕获组

这与打字稿无关,因为错误表明问题来自无效的正则表达式。

例子


推荐阅读