Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.05.2009, 14:21
Новичок на форуме
Отправить личное сообщение для y4enick Посмотреть профиль Найти все сообщения от y4enick
 
Регистрация: 18.07.2008
Сообщений: 3

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]!='') ....


Но он мне не очень нравится. Может есть вариант по короче?
Ответить с цитированием
  #2 (permalink)  
Старый 20.05.2009, 14:40
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

var str = 'abc';
var reg = /ab/;
alert(reg.test(str));
Ответить с цитированием
  #3 (permalink)  
Старый 20.05.2009, 15:07
Новичок на форуме
Отправить личное сообщение для y4enick Посмотреть профиль Найти все сообщения от y4enick
 
Регистрация: 18.07.2008
Сообщений: 3

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

Хотелось бы обойтись одним вызовом exec().
Ответить с цитированием
  #4 (permalink)  
Старый 20.05.2009, 15:48
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

зачем exec, если test работает быстрее?
нужно регулярное выражение с "?" - составляйте. Я не понимаю, что вам надо?
Ответить с цитированием
  #5 (permalink)  
Старый 20.05.2009, 16:02
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от ZoNT
Я не понимаю, что вам надо?
Я тоже. Если нужно в регулярке использовать символ '?' именно как символ, то экранируйте его слешем.
Ответить с цитированием
  #6 (permalink)  
Старый 20.05.2009, 19:00
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

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

[/телепат mode]
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
мааленький вопрос по Regexp:) mirniy Общие вопросы Javascript 1 22.01.2009 20:47
RegExp & Mozilla (быстродействие) tau Общие вопросы Javascript 9 24.11.2008 16:35
Как узнать символ по unicode-коду??? alexKniaz Общие вопросы Javascript 3 25.10.2008 23:26
Мягкие переносы скриптом вставить невозможно? (символ ­) barbiturat Общие вопросы Javascript 6 05.09.2008 22:53
RegExp и unicode Yury900 Общие вопросы Javascript 7 13.05.2008 00:19