我正在使用以下正则表达式来验证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吗?
答案 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