2012-04-04 3 views
0

Я создаю регулярное выражение javascript для соответствия запросам в строке поисковой системы. У меня проблема с чередованием. У меня есть следующее регулярное выражение:Изменение регулярного выражения Javascript

.*baidu.com.*[/?].*wd{1}= 

Я хочу, чтобы иметь возможность сопоставить строки, которые имеют строку «слово» или «QW» в дополнение к «БВ», но все, что я пытаюсь безуспешно. Я думал, что смогу сделать что-то вроде следующего:

.*baidu.com.*[/?].*[wd|word|qw]{1}= 

но он не работает.

+1

'[]' создает класс символов, вместо этого используйте '(wd | word | qw)'. Также избавитесь от этого '{1}', это бесполезно. – NullUserException

+0

Немного больше о том, что вы пытаетесь сделать, поможет нам помочь вам намного больше: D –

ответ

3

заменить [wd|word|qw] на (wd|word|qw).

[] обозначает наборы символов, () обозначает логические группировки.

+0

+1, но ... еще один шаг вперед, вы можете добавить «replace» (wd | word | qw) ' с 'qw | w (?: или)? d'" – zx81

2

Ваше выражение:

.*baidu.com.*[/?].*[wd|word|qw]{1}= 

действительно нужно несколько изменений, в том числе [wd|word|qw] к (wd|word|qw)и избавляется от избыточного {1}, например, так:

.*baidu.com.*[/?].*(wd|word|qw)= 

Но вы также должны понимать, что первая часть вашего выражения (.*baidu.com.*[/?].*) будет соответствовать baidu.com hello what spelling/handle????????? или hbaidu-com/ или даже что-то подобное е lkas----jhdf [email protected]@!3hdsfbaidugcomlaksjhdf.[($?lakshf, потому что точка (.) соответствует любому символу, кроме символов новой строки ... чтобы соответствовать буквальное точку, вы должны избавиться от нее с помощью обратной косой черты (например, \.)

Есть несколько подходов можно предпринять, чтобы соответствовать вещи URL, но мы могли бы помочь вам больше, если вы сообщите нам, что вы пытаетесь сделать или выполнить - возможно, регулярное выражение не лучшее решение или (EDIT) только часть лучшего решения?

Смежные вопросы