проблема с регэкспом
надо взять число 50 из строки, которая модет принимать вид:
АА 10 50 АА 5 50 АА 50 50 10 АА 50 50 2 т.е. числа может быть 2 или 3, двух или одно значное. между буквами и цифрами n-пробелов Пытаюсь сделать так сначала нахожу /АА\s+[0-9]+\s+([1-9][0-9])/g а потом еще раз по регулярному выр. /[1-9][0-9]$/ig Вопрос1: можно ли сделать это в 1 строку(1 рег.выр), Вопрос2: можно ли вместо АА в паттерне ставить переменную. если можно, то как? |
1:
var reg = /АА\s+[0-9]+\s+([1-9][0-9])/;// регулярное выражение не должно содержать флага g , иначе метод match() будет работать не так как нам нужно var text = "АА 50 50 10"; var result = text.match(reg); if(result!=null){ var full = result[0];// содержит найденную строку целиком var gg = result[1];// содержит подстроку, соответствующую первому подвыражению т.е. ([1-9][0-9]) } alert(gg); По второму вопросу ответить затрудняюсь. |
По второму вопросу - использовать конструктор RegExp():
var substring = "AA"; var regexp = new RegExp(substring + "\s+[0-9]+\s+([1-9][0-9])"); |
Zibba, Андрей Параничев, Спасибо!
var substring = "AA"; var regexp = new RegExp(substring + "\s+[0-9]+\s+([1-9][0-9])"); если тут сделать alert(regexp) то получается /AAs+[0-9]+s+([1-9][0-9])/ может что я не правильно делаю? |
twolf,
Нет, это я ошибся, надо вот так: var substring = "AA"; var regexp = new RegExp(substring + "\\s+[0-9]+\\s+([1-9][0-9])"); |
ага, получается еще раз экранировать надо.
Андрей Параничев, спасибо еще раз |
Часовой пояс GMT +3, время: 07:19. |