2016-10-26 3 views
-1

У меня есть следующее регулярное выражение, которое я проверенную:Matching Регулярное выражение для URLS в JavaScript Производит нулевой

"(http|ftp|https)://([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\[email protected]?^=%&/~+#-])?" 

enter image description here

У меня есть следующий Javascript код, чтобы найти регулярные выражения:

var cTextVal = "This URL should match http://google.com"; 
var regEx = "(http|ftp|https)://([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\[email protected]?^=%&/~+#-])?" 


var matches = cTextVal.match(regEx); 
alert(matches); // This produces null 

Как найти строку, которая соответствует этому регулярному выражению в JavaScript?

Обновление на основе Комментарии:

Это разбивает мой код:

var regEx = /(http|ftp|https)://([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\[email protected]?^=%&/~+#-])?/g 

Это производит нуль:

var regEx = "/(http|ftp|https)://([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\[email protected]?^=%&/~+#-])?/g" 
+1

Вы должны использовать '/ yourRegex /', 'не "yourRegex"', в противном случае вам нужно, чтобы избежать обратной косой черты. – Xufox

+1

или новый RegExp .... но тогда экранирование - это боль в этом случае. –

+0

Это было бы в 'match [0]' для всего совпадения, если бы оно было, которое не основано на 'null 'результат. – PHPglue

ответ

0

побег косых черт и перед группой второго захвата

var regEx = /(http|ftp|https):\/\/([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\[email protected]?^=%&/~+#-])?/; 
 

 
var cTextVal = "This URL should match http://google.com"; 
 

 
var matches = cTextVal.match(regEx).shift(); 
 

 
console.log(matches);

Смежные вопросы