Angular 7-Web URL正则表达式检查在每次调用时给出不同的结果

时间:2018-11-28 07:57:49

标签: javascript regex angular typescript angular7

我正在使用一个Angular应用程序,该应用程序的页面可以列出候选人,查看有关候选人的一些信息,然后单击将您导航到候选人网页的链接。

我无法控制应聘者设置其URL的方式,我只能在FE上过滤无效的URL。并且无需检查URL在BE端是否有效。因此,我想出了一个函数来检查它,如果不正确,请将URL设置为undefined

我正在使用此REGEX

/^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/gm

这是函数:

private processUrl(url: string): string {
  console.log('URL:', url, 'Correct:', URL_REGEX.test(url));
  console.log('URL result:', URL_REGEX.test(url) ? url : undefined);
  return URL_REGEX.test(url) ? url : undefined;
}

这就是乐趣的开始。某些URL即使正确无误也被视为错误,当您重新加载页面时,结果将更改。为了使它更令人迷惑,console.log中的第一次REGEX检查会将URL视为错误,而将第二次视为正确。这是日志:(不要单击链接,您会被非洲滚动或翻滚

Run 1 - init
Array(3) [ {…}, {…}, {…} ]
URL: https://www.youtube.com/watch?v=DLzxrzFCyOs Correct: true 
URL result: undefined
URL: https://www.youtube.com/watch?v=VG0gwh8jwB0 Correct: false
URL result: https://www.youtube.com/watch?v=VG0gwh8jwB0
URL: blabla Correct: false
URL result: undefined

Run 2 - refresh
Array(3) [ {…}, {…}, {…} ]
URL: https://www.youtube.com/watch?v=DLzxrzFCyOs Correct: false
URL result: https://www.youtube.com/watch?v=DLzxrzFCyOs
URL: https://www.youtube.com/watch?v=VG0gwh8jwB0 Correct: true
URL result: undefined
URL: blabla Correct: false
URL result: undefined

看起来REGEX本身没有问题,但打字稿行为异常。我以数组形式接收候选人列表,因此我想可以排除异步问题。在函数中没有console.log()的情况下会发生此问题,输出是相同的。

0 个答案:

没有答案