Помогите написать регулярку
Здравствуйте. Прошу помочь с регуляркой.
Есть строка типа: ........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); НО ОН УПОРНО НИЧЕГО НЕ НАХОДИТ!! Прошу помочь...:help: |
больше обратных слешей: \d -> \\d
|
Не хотелось создавать новой темы, сорри за воскрешение поста, она вроде как подходит моей проблеме.
Что-то я немножечко туплю. Подскажите, как разбить строку на пробелы так, чтоб пробелы не учитывались в скобках: 'vasia(petia grisha) grisha( petia vasia) petia(vasia grisha )' На выходе должен получиться такой массив: ['vasia(petia grisha)', 'grisha( petia vasia)', 'petia(vasia grisha )'] В голову лезут страшные решения: например, разбить строку сплитом по пробелам и в цикле воссоединить содержимое скобок. Уверен, есть решения по-адекватнее. Спасибо. |
var str = 'vasia(petia grisha) grisha( petia vasia) petia(vasia grisha )'; var result = str.match(/\S*?\(.*?\)/g); Примерно так. Шаблон подправить под реально возможные варианты строки. |
Цитата:
alert('vasia(petia grisha) grisha( petia vasia) petia(vasia grisha )'.match(/[^(]+\([^)]*\)/g)); |
Как то так. Но тут есть подводные камни.)
<script>alert( 'vasia(petia grisha) grisha( petia vasia) petia(vasia grisha )' .split(/\s(?![^(]*\))/g) .join('\n'));</script> |
Спасибо всем огромное.
|
С регулярками у меня всё лучше, но, порой, возникают проблемы, которые не могу понять, как решить. Нужно извлечь содержимое скобок из строки:
'(:not(.hide))'.replace( /\(([^\(\)]*)\)/, '$1' ); //":not(.hide)" Работает верно, но, если добавить что-то перед строкой, результат будет не таким, как ожидаю: 'xxx(:not(.hide))'.replace( /.*\(([^\(\)]*)\)/, '$1' ); //".hide)" Как извлечь содержимое скобок из второго примера? Псевдопаттерн: строка(содержимое) Спасибо. |
Что-то ты мудришь:):
alert( 'xxx(:not(.hide))'.replace( /^.*?\((.*)\)/, '$1' ) ) Кстати '(:not(.hide))'.replace( /\(([^\(\)]*)\)/, '$1' ); //":not(.hide)"вовсе не ":not(.hide)", а "(:not.hide)" |
Aetae, спасиб, не могу плюсик поставить.
Цитата:
|
Часовой пояс GMT +3, время: 22:56. |