Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Аналог && в регулярных выражениях (https://javascript.ru/forum/misc/39699-analog-v-regulyarnykh-vyrazheniyakh.html)

lancer 08.07.2013 17:25

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

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

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

skrudjmakdak 08.07.2013 17:29

b_reg = /[BA]/g;

Deff 08.07.2013 17:35

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

рони 08.07.2013 18:11

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

Deff 08.07.2013 18:58

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

devote 08.07.2013 19:00

Deff,
меняю местами буквы
alert(/B[^A]*A|A[^B]*В/gim.test("qwertyqwerAt\nyB"))

devote 08.07.2013 19:04

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

Deff 08.07.2013 20:06

:D
alert(/A/gim.test("qwertyqwerBt\nyA")&&/B/gim.test("qwertyqwerBt\nyA"))
alert(/A/gim.test("qwertyqwerBt\nyA")&&/B/gim.test("qwertyqwerAt\nyB"))

lancer 09.07.2013 15:53

Цитата:

Сообщение от skrudjmakdak (Сообщение 261062)
b_reg = /[BA]/g;

Ваш пример не работает - срабатывает когда есть одна из букв, а я спрашивал когда присутствуют обе.

lancer 09.07.2013 17:22

Пример Deff'a.

Цитата:

Сообщение от Deff (Сообщение 261068)
a = "qwertyqwerBtyA";
b_reg = /B.*?A|A.*?В/g;
		
$("#draggable").click(function(){
	if(b_reg.test(a))
		alert("Есть");	
});

В чем смысл "?", если возможность отсутствия элемента уже описана звездочкой.

Цитата:

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

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


Часовой пояс GMT +3, время: 08:24.