#javascript #regex
#javascript #регулярное выражение
Вопрос:
Мой URL-адрес имеет значение параметра, как показано ниже:
Nr=AND(OR(abc:def),OR(ghi:jkl),OR(mno:pqr)...)
Использовал приведенное ниже выражение регулярного выражения для успешного извлечения приведенной выше строки запроса, но оно возвращает только первое значение массива, например. получая только значения abc и def в массиве.
OR(([^:]*):([^)]*))
Я хотел извлечь все значения в виде двух отдельных значений массива, таких как abc, ghi, mno и def, jkl, pqr…
Пожалуйста, найдите мой код ниже:
var getNrValue = 'AND(OR(Analyzed:abc),OR(Compounds:def),OR(Chemical:mno))';
var regex = /OR(([^:]*):([^)]*))/gm;
var s = regex.exec(getNrValue);
console.log(s);
любая помощь в этом?
Комментарии:
1. Покажите нам полный код
Ответ №1:
Вы можете использовать это регулярное выражение:
([^():] ):([^():] )
В демонстрации регулярных выражений на правой панели показаны группы захвата. Существует также живая демонстрация JS.
Используйте этот код для создания массивов (см. Вывод живой демонстрации JS):
var array1 = [];
var array2 = [];
var string = 'Nr=AND(OR(abc:def),OR(ghi:jkl),OR(mno:pqr)...)'
var string = 'Nr=AND(OR(abc:def),OR(ghi:jkl),OR(mno:pqr)...)'
var myregex = /([^():] ):([^():] )/g;
var thematch = myregex.exec(string);
while (thematch != null) {
// add it to array of captures
array1.push(thematch[1]);
array2.push(thematch[2]);
document.write("left side: ",thematch[1],"<br />");
document.write("right side: ",thematch[2],"<br />");
// match the next one
thematch = myregex.exec(string);
}
Объяснение:
([^():] )
записывает в группу 1 любые символы, которые не являются круглыми скобками()
или двоеточиями:
:
([^():] )
записывает в группу 2 любые символы, которые не являются круглыми скобками()
или двоеточиями:
- код извлекает совпадения групп 1 и 2 и помещает их в два массива
Дайте мне знать, если у вас возникнут вопросы. 🙂
Комментарии:
1. просто дайте мне знать, имеет ли мой параметр запроса следующие изменения, такие как Nr=И (ИЛИ (abc: def, abc: aaa, abc: ddd), ИЛИ (ghi: jkl, ghi: ggg, ghi: ghg), ИЛИ (mno: pqr, mno: ppp, mno: qqq)…). Здесь добавляются дополнительные значения..