Вход

Просмотр полной версии : Не работает RegEx


propostaff
05.07.2012, 17:43
В общем я знаком с регулярными выражениями под php. Создал выражение
(?<=q=).*?(?=[^A-Za-z0-9_\+])|(?<=q=).*$
Но оно не работает в javascript, пытался решить проблему, как я понял не работает конструкция <=, но как заменить её я не могу придумать, есть идеи?

devote
05.07.2012, 19:20
придумать, есть идеи?
что бы получить ответ, нужно не только кусок реги показывать, но и объяснять что именно должна регулярка делать.

propostaff
05.07.2012, 20:49
она парсит урл, точнее кусок урл. Он может быть такого вида:
http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=javascript+ru
без пробела в конце, либо такого:
http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=javascript+regex+Invalid+group#hl=ru&gs_nf=1&pq=javascript%20%D0%B8%20php%20regexp%20%D0%BE%D1% 82%D0%BB%D0%B8%D1%87%D0%B8%D1%8F&cp=7&gs_id=c3&xhr=t&q=javascript+ru&pf=p&sclient=psy-ab&oq=%D0%BE%D1%84%D0%BC%D1%84%D1%8B%D1%81%D0%BA&gs_l=&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb&fp=35bf63437e7f3d7e&biw=1920&bih=1099

devote
05.07.2012, 22:02
без пробела в конце, либо такого:
а что в итоге то должно быть? то-есть результат то какой должен быть?

devote
05.07.2012, 22:29
типо этого чтоль:

var m;

var url = "http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=javascript+ru";

if ( m = /(?:q=)(.*?(?=[^A-Za-z0-9_\+])|.*$)/g.exec( url ) ) {
alert( m.join("\n\n") );
}

var url = "http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=javascript+regex+Invalid+group#hl=ru&gs_nf=1&pq=javascript%20%D0%B8%20php%20regexp%20%D0%BE%D1% 82%D0%BB%D0%B8%D1%87%D0%B8%D1%8F&cp=7&gs_id=c3&xhr=t&q=javascript+ru&pf=p&sclient=psy-ab&oq=%D0%BE%D1%84%D0%BC%D1%84%D1%8B%D1%81%D0%BA&gs_l=&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb &fp=35bf63437e7f3d7e&biw=1920&bih=1099";

if ( m = /(?:q=)(.*?(?=[^A-Za-z0-9_\+])|.*$)/g.exec( url ) ) {
alert( m.join("\n\n") );
}

propostaff
08.07.2012, 23:13
Результат, который должен получиться выделе жирным шрифтом в моем предыдущем посте

propostaff
08.07.2012, 23:16
Нужно, чтобы "q=" не входило в результат

devote
08.07.2012, 23:19
Нужно, чтобы "q=" не входило в результат
и что же вам не нравится в моем примере?
var m;

var url = "http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=javascript+ru";

if ( m = /(?:q=)(.*?(?=[^A-Za-z0-9_\+])|.*$)/g.exec( url ) ) {
alert( m[1] );
}

var url = "http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=javascript+regex+Invalid+group#hl=ru&gs_nf=1&pq=javascript%20%D0%B8%20php%20regexp%20%D0%BE%D1% 82%D0%BB%D0%B8%D1%87%D0%B8%D1%8F&cp=7&gs_id=c3&xhr=t&q=javascript+ru&pf=p&sclient=psy-ab&oq=%D0%BE%D1%84%D0%BC%D1%84%D1%8B%D1%81%D0%BA&gs_l=&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb &fp=35bf63437e7f3d7e&biw=1920&bih=1099";

if ( m = /(?:q=)(.*?(?=[^A-Za-z0-9_\+])|.*$)/g.exec( url ) ) {
alert( m[1] );
}