Как указывали другие, если все строки заканчиваются ссылкой «Ссылка», просто используйте замену. В противном случае любой из этих методов будет работать нормально:
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);
Скопируйте и вставьте в окно консоли браузера для запуска.
Чтобы ответить на ваш вопрос («Однако почему мой RegEx не работает?«) В комментарии на другой ответ, ваш RegEx выполняет следующие действия:
/^ (^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
В то время как вы можете иметь два„ начало строки“идентификаторы в Regex, там будет только когда будет один„начало строки“ ^
характера только отрицание в классе символов, который заключен в квадратных скобках, не изогнуто. Если вы хотите, чтобы захватить буквальную каретку (^
), поставить обратный косую черту перед ним (\^
).
Потому что, если есть более чем одна строка для работы. Потому что там где-то может быть 'Link' в середине строки. Потому что есть так много, что может пойти не так с простой заменой строки. Кроме того, нет причин. –
Ни один из этих сценариев не верен, так что это кажется лучшим ответом. – LonelyWebCrawler
@ Kolink не нужно, чтобы ваши трусики закручивались. Заявитель прямо заявляет, что у него есть несколько строк * и продолжает перечислять их. –