diff --git a/src/plugins/autolink.js b/src/plugins/autolink.js
index 118a66eefc..5526633957 100644
--- a/src/plugins/autolink.js
+++ b/src/plugins/autolink.js
@@ -23,10 +23,12 @@
var DELIMITERS = [KEY_COMMA, KEY_ENTER, KEY_SEMICOLON, KEY_SPACE];
- var REGEX_LAST_WORD = /[^\s]+/mg;
-
- var REGEX_URL = /((([A - Za - z]{ 3, 9}: (?: \/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(https?\:\/\/|www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))((.*):(\d*)\/?(.*))?)/i;
+ var REGEX_LAST_WORD = /[^\s]+/gim;
+ var REGEX_URL = /((([A - Za - z]{ 3, 9}: (?: \/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(https?\:\/\/|www.|[-;:&=.\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))((.*):(\d*)\/?(.*))?)/i;
+
+ var REGEX_EMAIL = /[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/i;
+
/**
* CKEditor plugin which automatically generates links when user types text which looks like URL.
*
@@ -56,23 +58,22 @@
editor.on('paste', function (event) {
if (event.data.method === 'paste') {
- var data = event.data.dataValue;
-
- if ( data.indexOf( '<' ) > -1 ) {
+
+ if (event.data.dataValue.indexOf('<') > -1 || event.data.dataValue.indexOf('<') > -1) {
return;
}
- var match = data.match(REGEX_URL);
-
- if (match && match.length) {
- match = match[0];
-
- var remainder = data.replace(match, '');
-
- if (this._isValidURL(match)) {
- event.data.dataValue = '' + match + '' + remainder;
+ var instance = this;
+
+ event.data.dataValue = event.data.dataValue.replace(RegExp(REGEX_URL, 'gim'), function (url) {
+ if (instance._isValidURL(url)) {
+ if (instance._isValidEmail(url)) {
+ return '' + url + '';
+ } else {
+ return '' + url + '';
+ }
}
- }
+ });
}
}.bind(this));
},
@@ -142,6 +143,20 @@
return lastWord;
},
+
+ /**
+ * Checks if the given link is a valid Email.
+ *
+ * @instance
+ * @memberof CKEDITOR.plugins.ae_autolink
+ * @method isValidEmail
+ * @param {String} link The email we want to know if it is a valid Email
+ * @protected
+ * @return {Boolean} Returns true if the email is a valid Email, false otherwise
+ */
+ _isValidEmail: function(email) {
+ return REGEX_EMAIL.test(email);
+ },
/**
* Checks if the given link is a valid URL.