Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как написать регулярное выражение, которое будет возвращать строку? (https://javascript.ru/forum/misc/50756-kak-napisat-regulyarnoe-vyrazhenie-kotoroe-budet-vozvrashhat-stroku.html)

Armen 09.10.2014 21:13

Как написать регулярное выражение, которое будет возвращать строку?
 
Здравствуйте, подскажите пожалуйста.
Есть строки, которые могут быть ПРИМЕРНО следующего вида:
['ss_SS'] ['tt_AA'] ['gg_A'] ['ff'] ['gg_AZZ']

Символу внутри кавычек могут быть любые, это только, как пример скинул.
Единственное, что их объединяет, так это - квадратные скобки и кавычки внутри скобок.
Вопрос: подскажите пожалуйста, как написать 2 регулярки, которые будут возвращать:
1-я регулярка: символы до нижнего подчеркивание, то есть если есть строка ['ss_SS'] , то должна вернуть 'ss' или если строка ['ss'], то должна вернуть 'ss'
2-я регулярка: все символы, которые находятся в кавычках, то есть ['gg_AZZ'] - вернет 'gg_AZZ'
Ломаю голову уже весь день...
Спасибо

tsigel 09.10.2014 22:05

var arr = [];

    var str = "['ss_SS'] ['tt_AA'] ['gg_A'] ['ff'] ['gg_AZZ']";

    str.replace(/\[.+?\]/g, function (str) {
        arr.push(str.replace("[", "").replace("]", ""));
        return str
    });

    alert(JSON.stringify(arr));


Вообще я с регулярками совсем не дружу, так что 100% есть решение лучше. Символы до нижнего подчеркивания я бы вообще через split забирал из массива, который получился. Хотя лучше написать нормальную регулярку.

bes 09.10.2014 22:29

Цитата:

Сообщение от Armen
Вопрос: подскажите пожалуйста, как написать 2 регулярки, которые будут возвращать:
1-я регулярка: символы до нижнего подчеркивание, то есть если есть строка ['ss_SS'] , то должна вернуть 'ss' или если строка ['ss'], то должна вернуть 'ss'
2-я регулярка: все символы, которые находятся в кавычках, то есть ['gg_AZZ'] - вернет 'gg_AZZ'

function replacer(str, p) {
	return p;
}
var reg = /\['([^_]+).*'\]/;

console.log( "['ss_SS']".replace(reg, replacer) );
console.log( "['ss']".replace(reg, replacer) );

reg = /\[('.+')\]/;
console.log( "['gg_AZZ']".replace(reg, replacer) );


Часовой пояс GMT +3, время: 12:40.