У меня есть строки, такие как pie
и cherrypie
.Regexp: не заменить с начала
Как заменить все вхождения pie
в строках, которые не начинаются с pie
?
Вот что я имею на данный момент:
var regexp = new RegExp('pie', 'g');
var string = 'pie';
var string2 = 'cherrypie';
var cap = function(val) {
return val.charAt(0).toUpperCase()+val.slice(1);
}
console.log(string.replace(regexp, cap));
console.log(string2.replace(regexp, cap));
Интернет демо - http://jsbin.com/ERUpuYuq/1/
Просто откройте консоль и вы увидите две строки:
Pie
cherryPie
Ожидаемый результат является
pie - since it starts with "pie"
cherryPie
Я попытался добавить символ *
в начале моего регулярного выражения, без везения.
Если установить .pie
как мое регулярное выражение, я получаю это:
pie
cherrYpie
Решения будет замена регулярных выражений, который будет ловить все, что места где размещаются не на beginnign строки.
Кто-нибудь знает regexp?
Примечание: cap
функция не должна изменяться.
Я не могу использовать это, так как функция 'cap' является глобальной. – Jasper
Что это значит, что функция глобальна? –
Эта функция просто используется другим кодом. Создание еще одного клона с модификацией «slice» превратит мой код в макароны. – Jasper