regex(?:x) not work
Доброго времени суток. Пытаюсь разобраться с регулярками и прям на старте возникают проблемы с пониманием. Не могу понять как работает паттерн (?:x).
function content(){ str = 'foo bar'; var res = str.match(/(?:foo)\w*/); for (i = 0; i < res.length-1; i++) { console.log('res['+i+'] = '+res[i]); } } Ничего не выводит. Нужно что вы выводил "bar". Заранее благодарен. |
попробуйте так
function content(){ var str = 'foo bar'; var res = str.match(/(?:foo) (\w*)/); for (i = 0; i < res.length; i++) { console.log('res['+i+'] = '+res[i]); } } res[0] - это полностью совпавшая строка res[1] - это первая скобка если бы вместо (?:foo) написать просто (foo), то в результат вошло бы и 'foo' тоже |
http://www.regexr.com/
Новый аккаунт? |
str = 'foo bar'; var res = str.match(/(?:foo)\w*/); alert(res) "(?:foo)" - foo в незапоминающих скобках. В данном случае, поскольку к скобкам не добавлены никакие множители это равносильно просто "foo". "\w*" - 0 и более раз повторённый символ из диапазона [a-zA-Z0-9_]. В данном случае поскольку после foo идёт сразу пробел, получается вариант с 0 символов. В результате находит только "foo". Чтобы выводил bar если известно только foo: str = 'foo bar'; var res = str.match(/foo\s+(\w+)/); alert(res[1]) alert(res) |
Ребята, а расскажите по подробней про это выражение, если можно с примерами, а то туториалах как то размыто и без примеров.
Заранее благодарен. |
Цитата:
|
Часовой пояс GMT +3, время: 20:47. |