2013-02-11 2 views
0

Я пытаюсь решить свою проблему с регулярным выражением, и я считаю, что утверждение о взгляде может быть лучшим ответом (или так я думаю), но я не уверен, как их использовать.Lookahead Assertion JavaScript

Для примера ввода int a = 5; Я хотел бы получить значение идентификатора int, 5, с RegEx. Чтобы быть конкретным, я ищу RegEx для соответствия значению, указанному в идентификаторе и знаке равенства, но перед точкой с запятой.

Может ли кто-нибудь предоставить мне подробный пример, чтобы я мог узнать, как использовать утверждение lookahead (если это лучший способ сделать что-то подобное)?

Спасибо!

+0

http://www.regular-expressions.info/lookaround. html – alex

+0

Почему, по-вашему, вам нужен взгляд на это? Представление было бы для чего-то вроде идентификации 'int a' части в' int a = 5' vs 'int a;'. Вы будете «смотреть вперед», чтобы увидеть, есть ли задание или нет. –

+0

Моя нехватка знаний в области взглядов показывает ... Вы поднимаете интересный случай, который я на самом деле нахожу полезным. Как бы я использовал lookahead, чтобы увидеть, была ли указана переменная не так, как вы упомянули? – Joey

ответ

2

Регулярное выражение /=\s*(\d+)\s*;/ было бы лучше, поскольку оно допускает произвольное количество пробелов между элементами и захватывает цифры. В возвращаемом массиве будет [1].

+0

@Joey, похоже, вы ничего не знаете о массивах. Я предлагаю вам прочитать об этом. – Qtax

+0

@Joey Wint a = 5; ". Match (/ = \ s * (\ d +) \ s *; /); результат [" 5 "," 5 "] результат 0 всегда является полным совпадением. в 1 – rbernabe

+0

@Joey Я сделал Typo Я хочу написать: '" int a = 5; ". match (/ = \ s * (\ d +) \ s *; /);' – rbernabe

0

Вы можете использовать смотреть вперед со следующим фрагментом:

var input = "a = 12345;" 
var inputValue = input.replace(/\w+\s*=\s*(\d+)\s*(?=;).*/, "$1"); 

в примере результата 12345 с использованием "a = 5;" дает 5