Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   RegExp и символ '?' (https://javascript.ru/forum/css-html-internet-explorer/3755-regexp-i-simvol-%27-%27.html)

y4enick 20.05.2009 14:21

RegExp и символ '?'
 
Например есть код:
var str = 'a bc';
var res = /(ab)?/.exec(str);
alert(typeof res[1]);  // IE выводит 'string'(возвращает пустую строку), Opera и FF - 'undefined'


Как кроссбраузерно определить что вхождение не было найдно?

Есть такой вариант:
if (typeof res[1]!='undefined' && res[1]!='') ....


Но он мне не очень нравится. Может есть вариант по короче?

ZoNT 20.05.2009 14:40

var str = 'abc';
var reg = /ab/;
alert(reg.test(str));

y4enick 20.05.2009 15:07

Нужно регулярное выражение, именно с символом '?'. То есть в исходной строке могут быть 'обязательные' части и 'необязательные' (/.*(something)?.*(other)?.*(require).*/).

Хотелось бы обойтись одним вызовом exec().

ZoNT 20.05.2009 15:48

зачем exec, если test работает быстрее?
нужно регулярное выражение с "?" - составляйте. Я не понимаю, что вам надо?

Riim 20.05.2009 16:02

Цитата:

Сообщение от ZoNT
Я не понимаю, что вам надо?

Я тоже. Если нужно в регулярке использовать символ '?' именно как символ, то экранируйте его слешем.

x-yuri 20.05.2009 19:00

[телепат mode]
человеку нужно
var str = 'a bc';
var reg = /(ab)?/;
var res = reg.test(str);
// var res = reg.exec(str); // если нужно получить 
                            // доступ к подвыражениям
if(res) alert('*YAHOO*');

[/телепат mode]


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