想要将some text email@address.com
变为some text <a href="mailto:email@address.com">email@address.com</a>
以下是我在替换中使用的正则表达式:
'some text email@address.com'.replace(/([a-zA-Z0-9_\.\-]+)@(([[0-9]{1,3}' + '\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.' + ')+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)/gi, '<a href='mailto:$1'>$1</a>');
正则表达式无法正常工作,请帮忙。
答案 0 :(得分:1)
您可以使用replace()
功能的replacer function:
var str = "some text email@address.com";
var regex = /\w+@\w+\.\w+/gi;
var replacedString = str.replace( regex, function(match){
return '<a href="'+match+'">'+match+'</a>';
});
console.log( replacedString );
&#13;
答案 1 :(得分:1)
根据@Toto的建议,您可以使用此正则表达式\S+@\S+
在电子邮件中包含除空格之外的所有可能(和不可能)字符。
(\S+@\S+)
如果您只想包含英文字符a-z
,数字0-9
,点.
,下划线_
和破折号-
。你可以这样做:
([\w\.\-]+@\w+\.\w+)
如果您想要使用任何语言à è ì ò ù
添加前一个可能的字符,同时排除特殊字符% ^ & *
,您可以使用\pL
,如下所示:
([\w\.\-\pL]+@\w+\.\w+)
最后一个正则表达式的演示:
var Email = "some text email@address.com.";
Email = Email.replace(/([\w\.\-\pL]+@\w+\.\w+)/g, '<a href=mailto:$1>$1</a>');
document.write (Email);
&#13;
答案 2 :(得分:1)
老问题,但我在我的代码中做了类似的事情,并且必须修复一个错误,其中电子邮件地址已经包含在mailto链接中。这是我解决这个问题的简单方法:
var rx = /([mailto:\w.\-pL]+@\w+.[\w.\-pL]+)/gi
return str.replace(rx, function (match) {
return (match.indexOf('mailto') === 0) ? match : `<a href="mailto:${match}">${match}</a>`
})
正则表达式可选地匹配&#34; mailto:&#34;并且replacer函数检查它是否在匹配中,如果是,则返回它未修改。
也许这会帮助谷歌过路人。