#javascript #jquery #regex #html
#javascript #jquery #регулярное выражение #HTML
Вопрос:
У меня есть строка, подобная следующей:
var string = "'abc' @VAL([Q].[F1 w1 w1 w1]) 'hellllllllllo' @VAL([Q].[F2 w]) 'anything' @VAL([Q].[F3 w]) anything";
я хочу соответствовать следующему шаблону
@VAL([Q].[F1 w1 w1 w1])
@VAL([Q].[F2 w])
@VAL([Q].[F3 w])
на самом деле я хочу сопоставить шаблон строки, начинающийся с @VAL(и заканчивающийся)
Я попытался со следующим кодом:
var patt1 = /@VAL((.*))/g;
var myPattern = string.match(patt1);
и получаем следующий результат
@VAL([Q].[F1 w1 w1 w1]) 'hellllllllllo' @VAL([Q].[F2 w]) 'anything' @VAL([Q].[F3 w])
я не смог разобраться в этом нужна помощь!!!!!!!!!
Ответ №1:
Это вернет все совпадения:
result = subject.match(/@VAL([^)]*)/g);
Смотрите демонстрацию.
@VAL(
Матчи@VAL(
[^)]
соответствует одному символу, который не является a)
…- и
*
квантификатор повторяет это ноль или более раз *)
соответствует закрывающей круглой скобке
Ответ №2:
Ваше регулярное выражение слишком жадное, используйте это регулярное выражение на основе отрицания:
var patt1 = /@VAL(([^)]*))/g;
ИЛИ просто сделайте его ленивым:
var patt1 = /@VAL((.*?))/g;
var m = string.match(patt1);
//=> ["@VAL([Q].[F1 w1 w1 w1])", "@VAL([Q].[F2 w])", "@VAL([Q].[F3 w])"]