Помогите с регуляркой
Нужно из текста вырезать всё что между кавычками делаю так:
text.match('/Тема\:\"(.*)\"/gi'); Но возвращаеться null |
text.replace(/".+?"/gi, '""'); |
Цитата:
|
попробуй убрать глобал
|
text.match(/".+?"/gi); Будет возвращён массив с найденными подстроками. |
спасибо
|
Пардон за поднятие мертвой темы, не хотелось создавать новой.
Помогите плиз с регуляркой: нужно разбить строку на слова, делаю так: ' сок молоко работа '.replace(/\s+/g, ' ').replace( /\s(.*)\s/, '$1' ).split( ' ' ); //["сок", "молоко", "работа"] Но если убрать пробел в начале, то получится так: 'сок молоко работа '.replace(/\s+/g, ' ').replace( /\s(.*)\s/, '$1' ).split( ' ' ); //["сокмолоко", "работа"] А если убрать еще и в конце, то будет: 'сок молоко работа'.replace(/\s+/g, ' ').replace( /\s(.*)\s/, '$1' ).split( ' ' ); //["сокмолокоработа"] Да, регулярки — большая дырка в моих знаниях, но я всё никак не могу с ними подружиться, застревая на простейших задачах. На всякий случай: первый реплейс заменяет кучу пробелов на один, второй — убирает пробелы слева и справа (по крайней мере, мне бы так хотелось). |
Сорри, вспомнил, что в php есть тая функция как trim, она же реализована и на яваскриптах.
http://alt-f4.ru/trim-in-javascript В итоге: ' сок молоко работа'.replace(/\s+/g, ' ').replace(/((\s*\S+)*)\s*/, "$1").replace(/\s*((\S+\s*)*)/, "$1").split( ' ' ); //["сок", "молоко", "работа"] Хотя выглядит жутко. Есть варианты упрощения? UPD: 'сок молоко работа '.replace(/\s+/g, ' ').replace(/\s*((\s*\S+)*)\s*/, "$1").split( ' ' ) |
alert( 'сок молоко работа'.split(/\s+/) ) Проблема не в регулярках) |
Цитата:
' сок молоко работа '.split(/\s+/); //["", "сок", "молоко", "работа", ""] |
alert( ' сок молоко работа '.match( /\S+/g ) ) |
Хах, спасибо.
|
FINoM,
хочешь регуляркам за 20 минут научу)? способ расскажу, я за час выучил пока этот способ не нашел. |
Цитата:
|
во первых вот отрывок из моей "книги".
Цитата:
Это задача. Используя эту таблицу http://javascript.ru/RegExp , составь регулярку, которая будет находить в обычном тексте ссылки на ютьюб, при том будет сохранять в скобочную группу айдишник видео внутри этой ссылки. потом напиши функцию чтобы она находила в тексте все такие ссылки на ютьюб, и заменяла их чисто айдишниками ютьюбовских видео. |
А для наглядности скачай эклипс и установи на него плагин для проверки регулярок в реальном времени, я без него теперь жить не могу)) RegEx
он добавляет "вид" в эклипс который оч просто вызвать, научу потом если эклипс не юзал ни разу. |
Цитата:
var x = ' сок молоко работа '; var z = x.match( /[^\s]+/g ); alert( z.join( '\n' ) ); |
nerv_,
но точка доллар цифра это тоже непробельные символы, где логика? |
Я правильно понимаю, что пробелы только с начала и в конце?
<script> var str = ' сок молоко работа ' var new_str = str.split(/\s+/); //["", "сок", "молоко", "работа", ""] new_str.pop() new_str.shift() for(i=0;i<new_str.length;i++) { console.log(new_str[i]) // ["сок", "молоко", "работа"] console.log(new_str.length) //3 } </script> _____________ Блин скинул, и не посмотрел что есть 2ая страница) |
var text = "А я люблю обмазываться свежим дезодорантоми и дрочить. Каждое 23-е февраля я хожу по земле с черным мешком для мусора и собераю в него все дезодоранты и кремы для бриться которые мне дарят. На два полных мешка целый день уходит. Зато, когда после тяжёлого дня я прихожу домой, иду в ванну, включаю горячую воду…ммм и сваливаю в нее свое сокровище. И дрочу, представляя, что меня поглотил единый организм защиты отечества. Мне вообще кажется, что отечество, умеет думать, у него есть свои семьи, города, чувства, не смывайте их в унитаз, лучше приютите у себя, говорите с ними, ласкайте их…. А вчера в ванной, мне преснился чудный сон, как будто я нырнул в море, и оно прератилось в отечество, рыбы, водоросли, медузы, все из отечества,требующее защиты даже небо, даже Путин!" alert(text.match( /[a-zа-я\d_-]+/ig )) разберем на составные [a-z а-я \d _ -]+ [ab] - означает один символ ИЛИ а ИЛИ бэ, то есть квадратные скобки имею смысл ИЛИ. в нашем примере в квадратных скобках есть 5 членов: 1) a-z любая буква от a до z 2) а-я любая буква от а до я 3) \d любая цифра 4) _ жесткий пробел 5) - дефис так вот, квадратные скобки означают ОДИН СИМВОЛ при чем символ этот может подходить под первый член , под ИЛИ под второй член, и.т.п. я бы мог тупо написать в квадратных скобках ВСЕ символы ожидаемые в словах) но мне вломы писать алфавиты по этому я воспользовался комбинациями означающими алфавиты)) так вот, после квадратных скобок стоит плюс, что означает что символов подходящих под одно из того что в квадратных скобках должно быть одна или больше идущие подряд. |
var str = ' сок молоко работа '; str.trim().split(/\s+/); alert( str.trim().split(/\s+/) ); |
Цитата:
Цитата:
Цитата:
|
Цитата:
Ненавижу таких как ты. Из-за таких м*ков, много где не получается нормально употреблять букву Ё. "Простите, накипело." |
Aetae,
у меня к тебе вопрос, мудак: считаешь ли ты что я не знаю про букву ё и не знаю что эта регулярка её не найдет? или не считаешь. да или нет? нет, я конечно допускаю что твой скудный мог не догадался что я человека регуляркам учу, а не пишу скрипт для поиска слов, но все же за словами то элементарно следить надо! ты наверное думаешь что я научу его неправильно не сказав про букву ё в кририлеце? но мне кажется это дело в том что ты не умеешь выделять важное и неважное, не умеешь систематизировать. очевидно что я показывал как работают скобки, что есть алфавиты, и что есть символы например дефис и их можно написать так же как члены. но ты наверное, в силу своего неумения определять важное и неважное, не догадался что определенные свойства алфавитов, например ё, в данном обучающим примере не существенны. я понимаю, ты же просто не знал.... я не виню тебя, просто следи за словами будь добр. |
..
Цитата:
|
Aetae,
:yes: |
Aetae, здравствуйте! Я видел Ваш пост и считаю его самым логичным решением проблемы. Вместе с тем, есть предположение, что мой вариант может работать чуть быстрее в связи с тем, что в символьный класс \s входит меньше символов, нежели в \S. С другой стороны, вполне вероятно, что использование в моем случае инвертированного символьного класса [^....] их уравновешивает :) Протестировал бы кто... Может Мишка возьмется?)
p.s.: впрочем, вероятно внутренняя реализация у них почти идентична. Цитата:
|
Aetae,
твой вариант точки тоже захватит? |
не могу придумаит прпвило
Можно ли на яваскрипте сделать проверку текста?
Например текст имеет включения |
Реально.
Бесплатно вам никто этого не сделает. |
Понятно. а сколько может стоить такая работа?:)
|
Цитата:
<p id=sanika>dasdas[IMG]http://radikal.ru[/IMG]wqrwe[IMG]http://savepic.ru/[/IMG]53r25r[IMG]http://radikal.ru[/IMG][IMG]http://radikal.ru[/IMG]qw435643</p> <script type="text/javascript"> //Допустимые Ссылки var LnkValid = ["radikal.ru","savepic.ru"]; var pattern ="\\[img\\]([^\\]]*)\\[\\/img\\]"; var regexp = new RegExp(pattern,"img"); alert(regexp) function ReadErr(){ alert("!Вставлены не поддерживаемые ресурсом ссылки на изображения."); } function bb(str){ function replacer(str, p1, offset, s){ var a=false; for(var i in LnkValid){ if(p1.indexOf(LnkValid[i])!=-1){ a=true;break; } } if(!a){str='[IMG]!!'+p1+'[/IMG]';} return str; } var str2=str.replace(regexp,replacer) return str2; } // - Тут поместить в переменную str тестируемую строку; var str=document.getElementById('sanika').innerHTML //Результат var result=bb(str); alert('result:\n'+result) //Уведомление if(result!=str){ReadErr();} </script> |
Спасибо большое! А то начал сам, но вот с регуляркой не мог разобраться. Буду учится дальше. Спасибо!
|
яваскрипт справится, но такие проверки нужно проводить на сервере
|
На сервере проверка на PHP сделана. :) Приведенный пример не заработал, я пошел другим путем, правда он не совсем корректно работает
<script language="javascript"> function proverka() { var text = document.getElementsByName("message")[0].value; re = /\[IMG\](?=http\:\/\/img\.domen\.com\/|http\:\/\/www\.img\.domen\.com\/)(.*)*/i; re1 = /\[IMG\](.+)*/i; if ((text.match(re1)) && (!text.match(re))) { alert('Есть сторонний фотохостинг'); }else { alert('Все отлично'); } } </script> </head> <body> <form id="form1" name="form1" method="post" action="#" onsubmit="return proverka() qr_prepare_submit()"> <table width="100%" border="0" cellpadding="2" cellspacing="2"> <tbody><tr> <td><textarea name="message" cols="60" rows="7" id="message">[IMG]http://domen2.com/images/123.jpg[IMG]</textarea></td> <td> </td> </tr> <tr> <td><input name="Submit" value="Submit" onclick="return proverka()" type="submit"></td> <td> </td> </tr> </tbody></table> </form> если введены только неверные адреса - срабатывает, если только верные - тоже ок, но если есть и те и другие - говорит что все правильно. а надо наоборот - выводить ошибку, и пока не знаю как ее решить :( |
всё очень просто
ты выуди все домены для картинок по регэкспе для любого uri-адреса со скобками на домене и проверь домен по белому списку(нужно циклически вызывать rx.exec и после вызова проверять домен, регулярку лучше создавать в данном случае с использованием new, регулярка для урлов есть в любой базе регулярок) можно с использованием реплейс, как посоветовал товарищ выше, но это семантически неверно |
Спасибо, буду пробовать. к сожалению с яваскриптом я не очень, трудно идет. спасибо за подсказку
|
sanika,
В исходном скрипте есть //Допустимые Ссылки var LnkValid = ["radikal.ru","savepic.ru"]; В Вашем же Варианте - их нет |
Стыдно, но этот код очень сложен для меня :(
|
Цитата:
var LnkValid = ["radikal.ru","savepic.ru"]; (Можно добавлять/изменять Код вродь полностью готовый |
Часовой пояс GMT +3, время: 02:57. |