Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.12.2008, 22:46
-
Отправить личное сообщение для twolf Посмотреть профиль Найти все сообщения от twolf
 
Регистрация: 16.07.2008
Сообщений: 207

проблема с регэкспом
надо взять число 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: можно ли вместо АА в паттерне ставить переменную. если можно, то как?
Ответить с цитированием
  #2 (permalink)  
Старый 14.12.2008, 03:17
...
Отправить личное сообщение для Zibba Посмотреть профиль Найти все сообщения от Zibba
 
Регистрация: 13.10.2008
Сообщений: 225

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);


По второму вопросу ответить затрудняюсь.

Последний раз редактировалось Zibba, 14.12.2008 в 03:22.
Ответить с цитированием
  #3 (permalink)  
Старый 14.12.2008, 03:38
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

По второму вопросу - использовать конструктор RegExp():
var substring = "AA";
var regexp = new RegExp(substring + "\s+[0-9]+\s+([1-9][0-9])");
Ответить с цитированием
  #4 (permalink)  
Старый 14.12.2008, 12:30
-
Отправить личное сообщение для twolf Посмотреть профиль Найти все сообщения от twolf
 
Регистрация: 16.07.2008
Сообщений: 207

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, 14.12.2008 в 15:11.
Ответить с цитированием
  #5 (permalink)  
Старый 14.12.2008, 16:15
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

twolf,
Нет, это я ошибся, надо вот так:
var substring = "AA";
var regexp = new RegExp(substring + "\\s+[0-9]+\\s+([1-9][0-9])");
Ответить с цитированием
  #6 (permalink)  
Старый 14.12.2008, 16:45
-
Отправить личное сообщение для twolf Посмотреть профиль Найти все сообщения от twolf
 
Регистрация: 16.07.2008
Сообщений: 207

ага, получается еще раз экранировать надо.
Андрей Параничев, спасибо еще раз
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема со скриптом Lightbox F1eldy Общие вопросы Javascript 22 18.08.2010 16:04
проблема с обработкой DIV nerik AJAX и COMET 2 22.08.2008 17:40
Проблема с маркером kostian02 Общие вопросы Javascript 0 23.06.2008 16:10
проблема с ООП scuter Общие вопросы Javascript 19 23.03.2008 22:48
проблема с передачей русского текста в Prototype subaru Prototype & script.aculo.us 2 26.07.2007 16:56