Проверьте, содержит ли URL www или https: // для RegEx - PullRequest
0 голосов
/ 24 октября 2019

У меня есть сценарий, в котором я хочу проверить, содержит ли строка URL-адрес, и сделать его кликабельным. Я использовал регулярные выражения, чтобы преобразовать его в URL. Но это работает только для http. Я хочу сделать это и для wwww. В регулярном выражении, которое у меня есть, я могу либо добавить htttp, либо удалить http, чтобы включить www в URL. Я вставил код в JSfiddle

JSFiddle

var convertTextToHTML = $("#systemNotificationMsg").text();
var conversation = convertTextToHTML.replace(/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/, function(text, link) {
   return '<a href="http://'+ link +'"> ' + link + ' </a>';
});

Ответы [ 2 ]

2 голосов
/ 24 октября 2019

Проверьте это, вы должны сделать глобальное совпадение, ваше регулярное выражение находит первое совпадение, возвращающееся. Вы должны сопоставить несколько /gi в регулярных выражениях.

	var convertTextToHTML = $("#systemNotificationMsg").text();
var conversation = convertTextToHTML.replace(/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/gi, function(text, link) {
	console.log("Link in text: "+ link);
   return '<a href="http://'+ link +'"> ' + link + ' </a>';
});
$("#systemNotificationMsg").html(conversation);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="systemNotificationMsg">
This message contains a link to www.google.com/hungerbox
and another to www.google.com so this is the example
</div>
2 голосов
/ 24 октября 2019

Это может быть достигнуто с немного более простым регулярным выражением.

Я обновил JSFiddle здесь:

https://jsfiddle.net/Lxnfq95b/1/

Регулярное выражение теперь:

/(www|https?)([^\s]+)/g

Обратите внимание, что /g требуется, чтобы заменить все.

(www|https?) будет соответствовать либо www. или ссылки http (s).

([^\s]+) заставит регулярное выражение продолжаться до тех пор, пока он не достигнет пробела.

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