Форум программистов, компьютерный форум, киберфорум
JavaScript: RegExp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/43: Рейтинг темы: голосов - 43, средняя оценка - 4.51
БТР - мой друг
 Аватар для Hagrael
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932

Регулярные выражения - кавычки

29.10.2010, 14:46. Показов 9325. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот у меня код:
JavaScript
1
2
str="  \" "
alert(/[0|a|\"\"]/.test(str))
Почему-то он выдаёт true! А ведь у меня только одна кавычка. Почему? И ещё один вопрос:
Я читал, что символы + и * жадные, и пытаются заполучить как можно больше, и чтобы ограничить их до первого вхождения последней буквы, надо писать ?. А на какую логику это опирается?

Заранее благодарен.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.10.2010, 14:46
Ответы с готовыми решениями:

Регулярные выражения
Не работают регулярные выражения, ничего не выдаёт вообще на экран, верно и неверно не выдаёт. <html> <head> ...

Регулярные выражения
Пользователь может зарегестрироваться на 3-х сайтах: mail.ru, google.ru, yandex.ru. До позиции @ e-mail может содержать 3 символа, затем...

Регулярные выражения
с помощью регулярных выражений надо вытащить из исходного кода название продукта. Это то что стоит в ковычках после слова title (т.е....

14
35 / 35 / 6
Регистрация: 26.02.2010
Сообщений: 62
29.10.2010, 15:05
Hagrael, [xyz]
Конструкция, задающая множество символов. Подобный шаблон сопоставляется с любым одиночным символом, принадлежащим множеству, определенному в скобках []. Множество задается перечислением, либо указанием диапазона.
0
БТР - мой друг
 Аватар для Hagrael
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
29.10.2010, 15:20  [ТС]
рони, то есть надо писать так:
JavaScript
1
[0]|[a]|[\"]
?
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
29.10.2010, 15:53
Чтобы одну кавычку в строке найти, достаточно
JavaScript
1
alert('   "   '.indexOf('"') != -1);
Но если уж очень хочется регвыр, то
JavaScript
1
alert(/"/.test(str));
Про жадность. Если искать в строке
foo { bar } lol } baz } qwe
/{.*}/ - сожрет все по максимуму { bar } lol } baz } . Если точнее, то оно ищет } с конца.
/{.*?}/ - сожрет по минимуму { bar } . Соответственно, ищет вперед.
0
БТР - мой друг
 Аватар для Hagrael
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
29.10.2010, 16:09  [ТС]
Vovan-VE, мне надо отловить именно строку.
JavaScript
1
/\sbgcolor=[".*?"]|['.*?']/.test(str)
вот что делаю я. Выдаёт true при вот такой строке:
bgcolor='5'
и в вот такой:
bgcolor='5
а ведь во втором случае не две кавычки.
А по поводу жадности - почему это происходит? Почему ? даёт такой эффект?
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
29.10.2010, 16:47
Так бы сразу и сказал
JavaScript
1
/\sbgcolor=("[^"]*"|'[^']*')/
Цитата Сообщение от Hagrael Посмотреть сообщение
Почему ? даёт такой эффект?
Пoтому что так и было задумано. * , + и {m,n} жадные, а *? , +? и {m,n}? не жадные.
1
БТР - мой друг
 Аватар для Hagrael
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
29.10.2010, 17:06  [ТС]
Vovan-VE, спасибо

Добавлено через 2 минуты
А не могли бы вы объяснить эту запись?
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
29.10.2010, 17:12
\sbgcolor= - это понятно, ты сам это писал: пробельный символ и строка bgcolor=
("[^"]*"|'[^']*') - альтернатива: это или это.
"[^"]*" - кавычка, затем сколько угодно любых символов, кроме кавычки, и опять кавычка.
1
БТР - мой друг
 Аватар для Hagrael
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
29.10.2010, 18:25  [ТС]
Vovan-VE, но ведь по идее * будет жадным, и такая строка:
bgcolor="red" color="blue"
вернёт
bgcolor="red" color="blue"
т. к. брать будет последнюю кавычку. Или я ошибаюсь?
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
29.10.2010, 18:43
Цитата Сообщение от Hagrael Посмотреть сообщение
но ведь по идее * будет жадным
Так мы же пишем [^"]* , а не .*
Он не даже при всем желании не сможет поглотить лишние кавычки.
1
БТР - мой друг
 Аватар для Hagrael
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
29.10.2010, 19:12  [ТС]
Vovan-VE, ух ты, хитро =) Спасибо за объяснение.

Добавлено через 17 минут
А почему этот код:
JavaScript
1
2
str="  bgcolor=35 a=3"
/\sbgcolor=("[^"]*"|'[^']*')/.test(str)
не работает?

Добавлено через 35 секунд
Он выдаёт ошибку. unexepted ILLEGAL

Добавлено через 1 минуту
Это из-за того, что я не занёс значение в переменную. А что результат test надо всегда заносить в переменную?

Добавлено через 3 минуты
Что за ересь творится с выражением?!
JavaScript
1
2
reg=new RegExp("\s","gi")
alert(reg)
выдаёт /s/gi !!! А где \ ???
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
29.10.2010, 19:19
Цитата Сообщение от Hagrael Посмотреть сообщение
Это из-за того, что я не занёс значение в переменную.
Это, возможно, из-за того, что ты точки с запятыми не используешь.

Цитата Сообщение от Hagrael Посмотреть сообщение
Что за ересь творится с выражением?!
Тут не PHP
JavaScript
1
2
alert('\s'); // s
alert('\\s'); // \s
0
БТР - мой друг
 Аватар для Hagrael
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
29.10.2010, 19:30  [ТС]
Vovan-VE, а почему так? Зачем ещё одна \ ???
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
29.10.2010, 19:57
Цитата Сообщение от Hagrael Посмотреть сообщение
Зачем ещё одна \ ???
Потому что \ - это символ экранирования. Он всегда им является. В первом случае он экранирует s, и получается буква s. Во втором случае он экранирует \ , и получается символ \ .
1
БТР - мой друг
 Аватар для Hagrael
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
29.10.2010, 20:25  [ТС]
Vovan-VE, понятно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.10.2010, 20:25
Помогаю со студенческими работами здесь

Регулярные выражения
Добрый день! Не могу понять логики данных примеров, буду признателен если объясните. console.log("hi".match(/\s*/g)); // ...

Регулярные выражения
var ab=getElementById('').value; var reg=new RegExp(/<vot_tut>/g,''); var myinde=" Privet eto stroka dlya poiska "; var...

Регулярные выражения - [$]
Почему когда я заключаю $ в квадратные кавычки, то он перестаёт считаться?

Регулярные выражения
Как с помощью регулярного выражения найти 20 символов? В символах есть только большие английские буквы и цифры.

регулярные выражения
Господа, вот такой скрипт выводит в столбик все буквы "в" написанные в промте, а как сделать, чтоб и само регулярное выражение тоже с ходу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru