我有以下JS代码(下面),它接受一个字符串并吐出超链接的现金标签(即$ AAPL $ TSE:BB等等)...它的效果很好,但问题是如果我的文字包含类似“ $ N225“..我仍然希望它被超链接,但因为它包含一个数字,它不起作用。但与此同时,我不希望它像“$ 2.50”这样的超链接......需要在它前面写一封信。有任何想法吗?提前谢谢。
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 :(得分: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 $::'));