Jump to content
  • 0

Регулярные выражения


NikuZ
 Share

Question

Подскажите пожалуйста как проще всего замеить введенный пользователем адрес URL в полее ввода на ссылку, при отправке.

Проверка ведется с помощью регулярного выражения (а как иначе).

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

Сам я "изобрел велосипед" с разбиением на массивы из просто текста и ссылок, с последующим их воводом. Тока наблюдается "черезстрочный" глюк, обсолютно одинаковый текст необрабатывается в четных строках, странно....:/

function bezPodderzki(string, korenRus)
{
var div = document.getElementById('gotoviiText');
text = string;

regVir = /[http://w{3}|w{3}]+.w+.[ru|com|name|ua]+[/w+/.w+]*/igm;

regPerenos = /n/g;
var ArrayPerenos = text.match(regPerenos);
perenosArray = text.split(regPerenos);

if (perenosArray.length >= 2)
{
for (var perenosi=0;perenosi<perenosArray.length;perenosi++)
{
newNode = document.createElement('span');
newText = document.createTextNode(perenosArray[perenosi]);
newNode.appendChild(newText);

perenosEnter = document.createElement('br');

blokText.appendChild(newNode);
blokText.appendChild(perenosEnter);
}
}
else {
newNode = document.createElement('span');
newText = document.createTextNode(text);
newNode.appendChild(newText);


blokText.appendChild(newNode);
}

var kolvoSpan = blokText.getElementsByTagName('span');
for(progonSpan=0;progonSpan<kolvoSpan.length;progonSpan++)
{
var ProverkaSsilkiVspan = regVir.test(kolvoSpan[progonSpan].lastChild.data);
if (ProverkaSsilkiVspan == true)
{
var tempSpan = kolvoSpan[progonSpan].lastChild.data;
var poluchenayaStroka = tempSpan.match(regVir);
textArray = tempSpan.split(regVir);
if(textArray.length == 0){textArray[0]=""};
if (RegExp.index != 0)
{
for(var kolvoSsilokVspan=0;kolvoSsilokVspan<textArray.length;kolvoSsilokVspan++)
{
newNodeSpan = document.createElement('font');
newTextSpan = document.createTextNode(textArray[kolvoSsilokVspan]);
newNodeSpan.appendChild(newTextSpan);
kolvoSpan[progonSpan].appendChild(newNodeSpan);

if (kolvoSsilokVspan < poluchenayaStroka.length)
{
newSsilka = document.createElement('a');
textSsilka = document.createTextNode(poluchenayaStroka[kolvoSsilokVspan]);
newSsilka.href = poluchenayaStroka[kolvoSsilokVspan];
newSsilka.appendChild(textSsilka);
kolvoSpan[progonSpan].appendChild(newSsilka);
}
}
}
else {
for(var kolvoSsilokVspan=0;kolvoSsilokVspan<textArray.length;kolvoSsilokVspan++)
{
newSsilka = document.createElement('a');
textSsilka = document.createTextNode(poluchenayaStroka[kolvoSsilokVspan]);
newSsilka.href = poluchenayaStroka[kolvoSsilokVspan];
newSsilka.appendChild(textSsilka);
kolvoSpan[progonSpan].appendChild(newSsilka);

if (kolvoSsilokVspan < textArray.length)
{
newNodeSpan = document.createElement('font');
newTextSpan = document.createTextNode(textArray[kolvoSsilokVspan]);
newNodeSpan.appendChild(newTextSpan);
kolvoSpan[progonSpan].appendChild(newNodeSpan);
}
}
}
kolvoSpan[progonSpan].removeChild(kolvoSpan[progonSpan].firstChild);
}
}
udalenie(korenRus);
redaktirovanie(korenRus);
}

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0
Проверка ведется с помощью регулярного выражения (а как иначе).

Ну и как "ведется" - удачно? :D

Первое, что бросается в глаза - Вы в символьном классе ([]) разместили выражения...

Link to comment
Share on other sites

  • 0
...это Вы про что?

Вот к примеру такой фрагмент вашего выражения:

/[http://w{3}|w{3}]/

с чем должен совпасть? С такой строкой:

http://www

, или с такой:

h{t3w}t|p:/:/

, или вообще без разницы, с чем совпадет, лишь бы совпало хоть с чем-то?

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy