Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.08.2012, 12:23
Новичок на форуме
Отправить личное сообщение для starjons Посмотреть профиль Найти все сообщения от starjons
 
Регистрация: 28.06.2012
Сообщений: 2

Помогите написать регулярку
Здравствуйте. Прошу помочь с регуляркой.
Есть строка типа: ........alt=1_2|176_2|175_1|.....
я ищу а есть ли в этой строке элементы с определенным индексом после подчеркивания, то есть создаю такой шаблон:
var str = '_' + (index+1) + '|'; //динамически создаваемое значение типа _2|
regex = new RegExp(str+'/');

а далее, если в этой строке есть такое вхождение(-ия), то их нужно найти и заменить на число, скажем Х
вот и я пишу
regNew = new RegExp('(\d+|alt=\d+)'+str+'/');
foundInCookie = forOpenList.match(regNew);

НО ОН УПОРНО НИЧЕГО НЕ НАХОДИТ!! Прошу помочь...
Ответить с цитированием
  #2 (permalink)  
Старый 17.08.2012, 13:10
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

больше обратных слешей: \d -> \\d
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #3 (permalink)  
Старый 08.05.2014, 21:28
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Не хотелось создавать новой темы, сорри за воскрешение поста, она вроде как подходит моей проблеме.

Что-то я немножечко туплю. Подскажите, как разбить строку на пробелы так, чтоб пробелы не учитывались в скобках:
'vasia(petia   grisha) grisha( petia vasia) petia(vasia grisha )'

На выходе должен получиться такой массив:
['vasia(petia   grisha)', 'grisha( petia vasia)', 'petia(vasia grisha )']


В голову лезут страшные решения: например, разбить строку сплитом по пробелам и в цикле воссоединить содержимое скобок. Уверен, есть решения по-адекватнее.

Спасибо.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #4 (permalink)  
Старый 08.05.2014, 21:59
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

var str = 'vasia(petia   grisha) grisha( petia vasia) petia(vasia grisha )';
var result = str.match(/\S*?\(.*?\)/g);


Примерно так. Шаблон подправить под реально возможные варианты строки.

Последний раз редактировалось Erolast, 08.05.2014 в 22:06.
Ответить с цитированием
  #5 (permalink)  
Старый 08.05.2014, 22:10
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от FINoM
Подскажите, как разбить строку на пробелы так, чтоб пробелы не учитывались в скобках
В данном случае, с точки зрения регулярных выражений, проще вытащить то, что требуется по шаблону. Например, так:
alert('vasia(petia   grisha) grisha( petia vasia) petia(vasia grisha )'.match(/[^(]+\([^)]*\)/g));
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 08.05.2014 в 22:13.
Ответить с цитированием
  #6 (permalink)  
Старый 09.05.2014, 02:51
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,560

Как то так. Но тут есть подводные камни.)
<script>alert(
    'vasia(petia   grisha) grisha( petia vasia) petia(vasia grisha )'
    .split(/\s(?![^(]*\))/g)
.join('\n'));</script>
__________________
29375, 35

Последний раз редактировалось Aetae, 09.05.2014 в 02:54.
Ответить с цитированием
  #7 (permalink)  
Старый 20.05.2014, 15:17
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Спасибо всем огромное.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #8 (permalink)  
Старый 03.09.2014, 18:03
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

С регулярками у меня всё лучше, но, порой, возникают проблемы, которые не могу понять, как решить. Нужно извлечь содержимое скобок из строки:
'(:not(.hide))'.replace( /\(([^\(\)]*)\)/, '$1' ); //":not(.hide)"

Работает верно, но, если добавить что-то перед строкой, результат будет не таким, как ожидаю:
'xxx(:not(.hide))'.replace( /.*\(([^\(\)]*)\)/, '$1' ); //".hide)"

Как извлечь содержимое скобок из второго примера?
Псевдопаттерн:
строка(содержимое)


Спасибо.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #9 (permalink)  
Старый 03.09.2014, 18:12
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,560

Что-то ты мудришь:
alert(
    'xxx(:not(.hide))'.replace( /^.*?\((.*)\)/, '$1' )
)


Кстати
'(:not(.hide))'.replace( /\(([^\(\)]*)\)/, '$1' ); //":not(.hide)"
вовсе не ":not(.hide)", а "(:not.hide)"
__________________
29375, 35

Последний раз редактировалось Aetae, 03.09.2014 в 18:14.
Ответить с цитированием
  #10 (permalink)  
Старый 03.09.2014, 18:16
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Aetae, спасиб, не могу плюсик поставить.
Сообщение от Aetae
вовсе не ":not(.hide)", а "(:not.hide)"
Точно, перепутал регулярки, которые пробовал.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите написать числовую функцию leny Общие вопросы Javascript 69 01.08.2012 15:26
Помогите написать JavaScript ! Alamogoro Общие вопросы Javascript 4 24.05.2012 19:11
Помогите сделать регулярку для HTML шаблона zeraid Общие вопросы Javascript 1 25.12.2011 15:28
Генератор случайных чисел. Помогите написать. Teenager Я не знаю javascript 5 05.01.2011 19:15
помогите написать аналог строки include("index.php?open=1") на js bushstas Общие вопросы Javascript 1 19.07.2009 02:48