Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   регулярки: замена ссылки на ютуб (https://javascript.ru/forum/misc/30183-regulyarki-zamena-ssylki-na-yutub.html)

Dim@ 29.07.2012 21:08

melky,
я не понял 3-ю задачу :blink: надо узнать что идет после
var txt = "txt";//fds
?

Hekumok 29.07.2012 21:12

Цитата:

Сообщение от melky (Сообщение 192744)
я ж Вам задачи дал, а не всем :)

Ну если решение уже есть, зачем придумывать другое? Ну, канеш, можно постараться придумать решение, которое будет проще и короче, но на это надо тратить время, и не факт, что у тебя получится придумать это самое решение...
Цитата:

Сообщение от melky (Сообщение 192744)
сдаётесь? сделать можно, и очень просто. учите реги :)

Нет, буду думать :)

Hekumok 29.07.2012 21:15

Цитата:

Сообщение от Dim@ (Сообщение 192747)
melky,
я не понял 3-ю задачу :blink: надо узнать что идет после
var txt = "txt";//fds
?

В третьей задачи нет такого :blink:

oneguy 29.07.2012 21:36

Решение 3 задачи:
alert("я мыл раму мылом, амиго".match(/я(?=.*(амиго))/).join(" "));

Deff 29.07.2012 21:53

Цитата:

Сообщение от Hekumok
Deff, русский->английский

<script type="text/javascript">

function LatRus(TxtTrans1,a){TxtTrans1=='lat'? TxtTrans1='rus':TxtTrans1='lat';
lat0='qwertyuiopasdfghjkl;\'zxcvbnm\,QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>`~[].'.split('');
lat='qwertyuiopasdfghjkl;\'zxcvbnm\,QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>`~'.split('');
lat.push('\\[');lat.push('\\]');lat.push('\\.');
rus=('йцукенгшщзфывапролджэячсмитьбЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёЁхъю').split('');
function transF(p){ar1=lat;ar2=rus;if(TxtTrans1=='lat'){ar2=lat0;ar1=rus}for(var i=0; i<ar1.length; i++){trans='/'+ar1[i]+'/gm';p=p.replace(eval(trans), ar2[i])}return p;} return transF(a)}


*!*
var a='Z njhjgk.cm e,tuf. yf hf,jne dtxthjv ,ele d bytnt b dc` hfccrf;e gjlhj,ytt\n\
Z тороплюсь e,tuf. на работу dtxthjv буду d bytnt b всё расскажу gjlhj,ytt'
*/!*


alert(LatRus('lat',a))
</script>

oneguy 29.07.2012 22:05

Задача.
Функция принимает 2 натуральных числа, не больше 0xFFFFFFFE и возвращает наибольший общий делитель этих чисел. Дана заготовка этой функции.
function gcd(m, n) {
  return (Array(m+1).join("*")+","+Array(n+1).join("*")).match(регулярка)[0].length;
}

Нужно вставить вместо "регулярка" регулярный литерал без флагов, так, чтобы функция выполняла своё задание.
Регулярный литерал должен быть длиной не более 256 символов. Считается, что имеется бесконечное количество памяти и времени во время выполнения задания.

Dim@ 29.07.2012 22:08

выложу то что не лень было решить ;)
1)
function prov(txt){
 if (!/[^a-zA-z]+/ig.test(txt)) if (txt.length < 15) return true; else return false;
 else return false;
}
alert(prov("БЛАLl"));
alert(prov("prov"));

2)
function prov(txt){
 if (/((\s)|(\S))\1/ig.test(txt)) return true;
 else return false;
}
alert(prov("Я пил яггу"));
alert(prov("я пил ягу"));

4)
function prov(txt){
 txt = txt.replace(/(<title>.+<\/title>)/ig, function (e){
  return e.replace(/(title)/ig, "div");
 });
 return txt;
}
alert(prov("<title>Я див</title>"));

Hekumok 29.07.2012 22:21

Цитата:

Сообщение от oneguy (Сообщение 192754)
Решение 3 задачи:
alert("я мыл раму мылом, амиго".match(/я(?=.*(амиго))/).join(" "));

:blink: я не знал, что так можно :lol:
Цитата:

Сообщение от Deff (Сообщение 192756)
<script type="text/javascript">

function LatRus(TxtTrans1,a){TxtTrans1=='lat'? TxtTrans1='rus':TxtTrans1='lat';
lat0='qwertyuiopasdfghjkl;\'zxcvbnm\,QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>`~[].'.split('');
lat='qwertyuiopasdfghjkl;\'zxcvbnm\,QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>`~'.split('');
lat.push('\\[');lat.push('\\]');lat.push('\\.');
rus=('йцукенгшщзфывапролджэячсмитьбЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёЁхъю').split('');
function transF(p){ar1=lat;ar2=rus;if(TxtTrans1=='lat'){ar2=lat0;ar1=rus}for(var i=0; i<ar1.length; i++){trans='/'+ar1[i]+'/g';p=p.replace(eval(trans), ar2[i])}return p;}a=a.split('');for(j in a){a[j]=transF(a[j])}return a.join('');}


*!*
var a='Z njhjgk.cm e,tuf. yf hf,jne dtxthjv ,ele d bytnt b dc` hfccrf;e gjlhj,ytt'
*/!*


alert(LatRus('lat',a))
</script>

Честно, нифига не понял
Цитата:

Сообщение от oneguy (Сообщение 192757)
Задача.
Функция принимает 2 натуральных числа, не больше 0xFFFFFFFF и возвращает наибольший общий делитель этих чисел. Дана заготовка этой функции.
function gcd(m, n) {
  var str="";
  for (var i=0; i<m; i++)
    str+="*";
  str+=",";
  for (i=0; i<n; i++)
    str+="*";
  return str.match(регулярка)[0].length;
}

Нужно вставить вместо "регулярка" регулярный литерал без флагов, так, чтобы функция выполняла своё задание.

А что значит 'не больше 0xFFFFFFFF'? Это скока?

nerv_ 29.07.2012 22:32

Цитата:

Сообщение от melky
без флагов в том числе "global"

ты не понял :) Мое решение заключалось в (флагов нет!)

oneguy, не?
function gcd( m, n ) {
	var str = new Array( m + 1 ).join( '*' ) + ',' + new Array( n + 1 ).join( '*' );
	return str.match( /регулярка/ )[ 0 ].length;
}

oneguy 29.07.2012 22:35

Цитата:

Сообщение от Hekumok
А что значит 'не больше 0xFFFFFFFF'? Это скока?

Это шестнадцатеричный литерал, со значением 4294967295, или Math.pow(2, 32)-1.


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