Помогите с регуляркой
Нужно из текста вырезать всё что между кавычками делаю так:
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, время: 06:53. |