2017-02-06 13 views
-1

У меня есть следующий JS-код (ниже), который берет строку и выплескивает гиперссылки на теги (например, $ AAPL $ TSE: BB и т. Д. И т. Д.) ... он отлично работает, но проблема в том, если в моем тексте содержится что-то вроде «$ N225». Я все еще хочу, чтобы это была гиперссылка, но поскольку она содержит номер, она не работает. Но в то же время я не хочу, чтобы это гиперссылка на что-то вроде «$ 2,50» ... перед ним должно быть письмо. Есть идеи? Заранее спасибо.Справка JS Regex, необходимая для создания CashTags

String.prototype.parseSymbols = function() { 
    'use strict'; 
    return this.replace(/[$]+[A-Za-z]+/g, function (u) { 
     var symbol = u.replace("$", "").toUpperCase(); 
     return u.link("/stocks/" + symbol); 
    }); 
}; 
+0

это не работает .. $ 2.50 не связывает, что хорошо .. но $ n225 не работает и $ TSE: BB тоже не работает. –

ответ

0

Вы почти у цели. Вы хотите, чтобы ваш RegExp сказать «знак доллара, за которым следует любое письмо, за которым следует любое количество букв или цифр, необязательно с последующим двоеточием и более букв/цифр Ergo:.. /\$[A-Z][A-Z0-9]*(:[A-Z0-9]+)?/ig

function parseSymbols(str) { 
 
    return str.replace(/\$[A-Z][A-Z0-9]*(:[A-Z0-9]+)?/ig, function (u) { 
 
     var symbol = u.replace("$", "").toUpperCase(); 
 
     return u.link("/stocks/" + symbol); 
 
    }); 
 
}; 
 

 
console.log(parseSymbols('a $N225 b $2.25 c $TSE:BB d $TSE:B:::B: e $::'));

+0

приветствия .. но как я могу получить что-то вроде $ TSE: BB тоже работать .. –

+0

Мне не хватает информации. Если '$ TSE: B ::: B:' тоже работает? –

+0

только такие тикеры, как $ TSE: BB или $ TSE: B или $ ASX: BHP и т.п и т.п работа .... –

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

  • Нет связанных вопросов^_^