2014-09-26 3 views
0

Я пытаюсь найти строку, за которой следует символ, заменив строку, найденную другим, но сохраняя следующий символ.Заменить найденную строку разной длины?

Мне это удалось, используя тест, за которым следует регулярное выражение, но я бы предпочел сделать это только с регулярным выражением.

Пример:

myVar.replace(/abc[ZER]/, x¿); 

, где ¿ является "Z", "Е" или "Р".

Expectation:

if i test abcZopu -> xZopu 
if i test abcWopu -> no match 

ответ

1
abc(?![^ZER]) 

Попробуйте this.See демо.

http://regex101.com/r/lS5tT3/43

Просто заменить whateveryouwant

+0

@ sb22 который regex аромат делает action-script использование? – vks

+0

@vks ECMAScript 3 (ревизия 262), поэтому он в основном такой же, как javascript. – Unihedron

+0

@Unihedron kk ... было просто любопытно, почему он выбрал простое регулярное выражение vs lookahead one ... но javascript действительно поддерживает lookaheads :) – vks

1

Просто захватить символы, которые присутствуют внутри класса символов и заменить найденную строку с x плюс символы внутри индекса группы 1.

> "abcZopu".replace(/abc([ZER])/g, 'x$1') 
'xZopu' 
> "abcWopu".replace(/abc([ZER])/g, 'x$1') 
'abcWopu' 

Во втором примере точный ввод печатается как результат, потому что в этой строке не происходит замены.

+0

Спасибо, но мой плохой я забыл указать: не PHP, AS3. – sb22

+0

это не php. Это javascript. –

+0

@ sb22 Затем используйте этот тег? – Unihedron