Как проверить URL внутри абзаца с помощью Regex - PullRequest
0 голосов
/ 05 декабря 2018

Я использую следующее регулярное выражение для проверки 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 голосов
/ 05 декабря 2018

Ну, есть некоторые вещи, которые вам нужно понять о 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...