Как написать регулярное выражение, которое будет возвращать строку?
Здравствуйте, подскажите пожалуйста.
Есть строки, которые могут быть ПРИМЕРНО следующего вида: ['ss_SS'] ['tt_AA'] ['gg_A'] ['ff'] ['gg_AZZ'] Символу внутри кавычек могут быть любые, это только, как пример скинул. Единственное, что их объединяет, так это - квадратные скобки и кавычки внутри скобок. Вопрос: подскажите пожалуйста, как написать 2 регулярки, которые будут возвращать: 1-я регулярка: символы до нижнего подчеркивание, то есть если есть строка ['ss_SS'] , то должна вернуть 'ss' или если строка ['ss'], то должна вернуть 'ss' 2-я регулярка: все символы, которые находятся в кавычках, то есть ['gg_AZZ'] - вернет 'gg_AZZ' Ломаю голову уже весь день... Спасибо |
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 забирал из массива, который получился. Хотя лучше написать нормальную регулярку. |
Цитата:
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, время: 01:07. |