As others have pointed out, if all the strings end in 'Link', just use a replace. Otherwise, any of these methods will work fine:
var i = 0;
var strings = [
'EducationLink',
'BioLink',
'InterestsLink'
];
var s = '';
var r = /^(.+)Link$/
for (i = 0; i < strings.length; i += 1) {
s = strings[i];
//s = s.substring(0, s.indexOf('Link')); //Uncomment for substring
//s = s.match(r)[1]; //Uncomment for regex
s = s.replace('Link', '');
strings[i] = s;
}
console.log(strings);
Copy and paste into a browser console window to run.
To answer your question ("However, why did my RegEx not work?") in a comment on another answer, your RegEx does the following:
/^ (^Link) $/
//Each regex term on own line, commented below
^ //start of string
//Literal space
(^Link) //Capturing group, string starting with 'Link'.
//Literal space
$ //end of string
While you can have two "start of string" identifiers in a Regex, there will only ever be one "start of string". The ^ character is only a negation in a character class which is enclosed in square brackets, not curved. If you want to capture a literal caret (^), put a backslash in front of it (\^).