如何使用Regex验证段落内的URL

时间:2018-12-05 05:16:27

标签: regex validation url

我正在使用以下正则表达式来验证URL:

/^(?:(?:https?|ftp):\/\/)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/\S*)?$/

但是我无法在这样的段落中验证URL:

  

许多学生用长度定义段落:一个段落是一组至少五个句子,一个段落是半页长,依此类推。实际上,u www.example.com和思想的连贯性句子之间是段落的组成部分。

此处无法检测到example.com

在这种情况下,有人可以提供正则表达式来验证URL吗?

1 个答案:

答案 0 :(得分:1)

  

关于RegEx,您需要了解一些事情。

^-是字符串开头的锚点。

$-是字符串末尾的锚点。

当您使用/^some regex$/时,它仅在字符串为“ some regex”时才匹配。 (由于开始时空间有限,因此无法匹配“某些正则表达式”事件)

let str = "Many students define paragraphs in terms of length: a paragraph is a group of at least five sentences, a paragraph is half a page long, etc. In reality, though, the u www.example.com and and coherence of ideas among sentences is what constitutes a paragraph."

let reg = /(?:(?:https?|ftp):\/\/)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/\S*)?/gi
let op = str.match(reg, str);
console.log(op);

您可以在此处详细了解此内容。 https://www.regular-expressions.info/refanchors.html