Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   регулярное выражение построение (https://javascript.ru/forum/misc/14598-regulyarnoe-vyrazhenie-postroenie.html)

javasc 22.01.2011 12:36

регулярное выражение построение
 
Имеем строку
youtube.com/watch?v=PstrAfoMKlc&feature=rec-LGOUT-exp_stronger_r2-2r-6-HM

нужно получить то что между /watch?v= и &
в нашем случае это PstrAfoMKlc .

Подскажите?

ksa 22.01.2011 15:22

Цитата:

Сообщение от javasc
нужно получить то что между /watch?v= и &
в нашем случае это PstrAfoMKlc .

Как вариант...

var str='youtube.com/watch?v=PstrAfoMKlc&feature=rec-LGOUT-exp_stronger_r2-2r-6-HM'
var beg='/watch?v='
var end='&'
var i=str.indexOf(beg)+beg.length
var j=str.indexOf(end,i)
alert(str.substring(i,j))

Aetae 22.01.2011 15:35

Цитата:

Сообщение от ksa (Сообщение 89168)
Как вариант...

var str='youtube.com/watch?v=PstrAfoMKlc&feature=rec-LGOUT-exp_stronger_r2-2r-6-HM'
var beg='/watch?v='
var end='&'
var i=str.indexOf(beg)+beg.length
var j=str.indexOf(end,i)
alert(str.substring(i,j))

И как, силён выйгрыш в производительности например перед:
alert(/\?v=(\w+?)&/.exec('youtube.com/watch?v=PstrAfoMKlc&feature=rec-LGOUT-exp_stronger_r2-2r-6-HM')[1])

ksa 22.01.2011 15:40

Цитата:

Сообщение от Aetae
И как, силён выйгрыш в производительности

Я не вкурсе... :no:

UnderShot 22.01.2011 16:02

?
var str="youtube.com/watch?v=PstrAfoMKlc&feature=rec-LGOUT-exp_stronger_r2-2r-6-HM";
alert(str.split("?v=")[1].split("&")[0])

Aetae 22.01.2011 16:16

В принципе как и ожидалось.)
<script type="text/javascript">
function f1(){
  var str='youtube.com/watch?v=PstrAfoMKlc&feature=rec-LGOUT-exp_stronger_r2-2r-6-HM'+Math.round();
  var beg='/watch?v=';
  var end='&';
  var i=str.indexOf(beg)+beg.length;
  var j=str.indexOf(end,i);
  return str.substring(i,j)
}
function f2(){
  var str='youtube.com/watch?v=PstrAfoMKlc&feature=rec-LGOUT-exp_stronger_r2-2r-6-HM'+Math.round();
  return /\?v=(\w+?)&/.exec(str)[1]
}
function f3(){
  var str='youtube.com/watch?v=PstrAfoMKlc&feature=rec-LGOUT-exp_stronger_r2-2r-6-HM'+Math.round();
  return str.split('?v=')[1].split('&')[0]
}
                                             
function test(f){
  var d=new Date(),i=10000,str='';
  while(i--){str+=f()};
  document.write(new Date()-d+'<br>')
  return str
}
var ar=[test(f1),test(f2),test(f3)]
document.write(ar[1]==ar[2]&&ar[0]==ar[1])
</script>

javasc 23.01.2011 01:01

ппц...я пока не мог на php уже сделал=)


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