2012-04-11 4 views
0

У меня есть эта строка в объекте:Javascript регулярные выражения предыдущие и завершающие символы

<FLD>dsfgsdfgdsfg;NEW-7db5-32a8-c907-82cd82206788</FLD><FLD>dsfgsdfgsd;NEW-480e-e87c-75dc-d70cd731c664</FLD><FLD>dfsgsdfgdfsgfd;NEW-0aad-440a-629c-3e8f7eda4632</FLD> 

this.model.get('value_long').match(/[<FLD>\w+;](NEW[-|\d|\w]+)[</FLD>]/g)

Возвращает:

[";NEW-7db5-32a8-c907-82cd82206788<", ";NEW-480e-e87c-75dc-d70cd731c664<", ";NEW-0aad-440a-629c-3e8f7eda4632<"] 

Что случилось с моим регулярным выражением, которое оно сбор предшествующих ; и завершение <

здесь ссылку на регулярное выражение http://regexr.com?30k3m

Обновлено:

это то, что я хотел бы вернулся:

["NEW-7db5-32a8-c907-82cd82206788", "NEW-480e-e87c-75dc-d70cd731c664", "NEW-0aad-440a-629c-3e8f7eda4632"] 

вот JSfiddle для него

http://jsfiddle.net/mwagner72/HHMLK/

ответ

2

Квадратные скобки создают класс персонажа, который вам не нужен. повторно, попробуйте изменить регулярное выражение следующего:

<FLD>\w+;(NEW[-\d\w]+)</FLD> 

Так это выглядит, как вы хотите, чтобы захватить группу захвата из каждого матча, вы можете использовать следующий код для создания массива с группой захвата в нем:

var regex = /<FLD>\w+;(NEW[\-\d\w]+)<\/FLD>/g; 
var match = regex.exec(string); 
var matches = []; 
while (match !== null) { 
    matches.push(match[1]); 
    match = regex.exec(string); 
} 

[<FLD>\w+;] будет соответствовать одному из символов внутри квадратных скобок, когда я думаю, что вы на самом деле хотите сделать, это соответствует все из них. Также для другого класса символов [-|\d|\w] вы можете удалить |, поскольку он уже подразумевается в классе символов, | должен использоваться только для чередования внутри группы.

Вот обновленная ссылка с новым регулярным выражением: http://jsfiddle.net/RTkzx/1

+0

И я верю, что он хочет, чтобы захватить первую группу захвата. Кажется, нужно пытаться снять начало и конец. –

+0

Я ценю ваш ответ, и я просмотрел ссылку, однако ваше регулярное выражение не соответствует правильным разделам строки. – theSociableme

+0

@MarkWagner См. Мое редактирование, я думаю, теперь он должен делать то, что вы хотите. Я также включил ссылку JSfiddle. –