Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.07.2013, 17:25
Профессор
Отправить личное сообщение для lancer Посмотреть профиль Найти все сообщения от lancer
 
Регистрация: 30.01.2008
Сообщений: 230

Аналог && в регулярных выражениях
Внимательно прочел здесь статью регулярные выражения, нашел там, что "|" это "или", но не нашел ничего про "и".

Ищу обязательное присутствие B и A.
Попробывал & по аналогии и && на всякий, но не работает никак.

a = "qwertyqwerBtyA";
b_reg = /B&A/g;
		
$("#draggable").click(function(){
	if(b_reg.test(a))
		alert("Есть");	
});
Ответить с цитированием
  #2 (permalink)  
Старый 08.07.2013, 17:29
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

b_reg = /[BA]/g;
Ответить с цитированием
  #3 (permalink)  
Старый 08.07.2013, 17:35
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

a = "qwertyqwerBtyA";
b_reg = /B.*A|A.*В/g;
		
$("#draggable").click(function(){
	if(b_reg.test(a))
		alert("Есть");	
});

Последний раз редактировалось Deff, 09.07.2013 в 17:51.
Ответить с цитированием
  #4 (permalink)  
Старый 08.07.2013, 18:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,115

Deff,
на всякий случай
var a = "qwertyqwerBtyA",
 b = "qwertyqwerBt\nyA",
 b_reg = /B.*A|A.*В/gim,
 a_reg = /B[\S\s]*A|A[\S\s]*В/gim;
 alert([b_reg.test(a),b_reg.test(b),a_reg.test(b)]);
Ответить с цитированием
  #5 (permalink)  
Старый 08.07.2013, 18:58
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

alert(/B[^A]*A|A[^B]*В/gim.test("qwertyqwerBt\nyA"))

Последний раз редактировалось Deff, 08.07.2013 в 20:08.
Ответить с цитированием
  #6 (permalink)  
Старый 08.07.2013, 19:00
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Deff,
меняю местами буквы
alert(/B[^A]*A|A[^B]*В/gim.test("qwertyqwerAt\nyB"))
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #7 (permalink)  
Старый 08.07.2013, 19:04
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

alert(/B[\s\S]*A|A[\s\S]*B/gim.test("qwertyqwerBt\nyA"))
alert(/B[\s\S]*A|A[\s\S]*B/gim.test("qwertyqwerAt\nyB"))
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #8 (permalink)  
Старый 08.07.2013, 20:06
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

alert(/A/gim.test("qwertyqwerBt\nyA")&&/B/gim.test("qwertyqwerBt\nyA"))
alert(/A/gim.test("qwertyqwerBt\nyA")&&/B/gim.test("qwertyqwerAt\nyB"))
Ответить с цитированием
  #9 (permalink)  
Старый 09.07.2013, 15:53
Профессор
Отправить личное сообщение для lancer Посмотреть профиль Найти все сообщения от lancer
 
Регистрация: 30.01.2008
Сообщений: 230

Сообщение от skrudjmakdak Посмотреть сообщение
b_reg = /[BA]/g;
Ваш пример не работает - срабатывает когда есть одна из букв, а я спрашивал когда присутствуют обе.

Последний раз редактировалось lancer, 09.07.2013 в 16:03.
Ответить с цитированием
  #10 (permalink)  
Старый 09.07.2013, 17:22
Профессор
Отправить личное сообщение для lancer Посмотреть профиль Найти все сообщения от lancer
 
Регистрация: 30.01.2008
Сообщений: 230

Пример Deff'a.

Сообщение от Deff Посмотреть сообщение
a = "qwertyqwerBtyA";
b_reg = /B.*?A|A.*?В/g;
		
$("#draggable").click(function(){
	if(b_reg.test(a))
		alert("Есть");	
});
В чем смысл "?", если возможность отсутствия элемента уже описана звездочкой.

Цитата:
* - Обозначает повторение 0 или более раз.
0 и есть отсутствие.

Еще вопрос, можно объяснить жадность/нежадность «на пальцах»? Везде об этом пишут, но почему-то в двух-трех абзацах, из которых как ни крути ничего не ясно.

Последний раз редактировалось lancer, 09.07.2013 в 17:25.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
кирилица в регулярных выражениях Ганж Общие вопросы Javascript 22 27.12.2012 01:58
как в регулярных выражениях написать неразрывной пробел? qwertyuiop Общие вопросы Javascript 6 03.08.2011 04:36
многострочный поиск в регулярных выражениях smollvrn Общие вопросы Javascript 9 24.02.2011 09:29
Помогите с позиционными проверки в регулярных выражениях Papa Серверные языки и технологии 4 23.05.2010 20:41
Экранирование квадратных скобок в регулярных выражениях Holod Я не знаю javascript 3 27.05.2009 22:52