Помогите составить регулярное выражение
Мне нужно выражние которое в строке:
JOOMtest1*test2JOOM Уберёт *test2 На php для preg_replace я написал: Код:
"/(?<=JOOMtest1)([А-Яа-яA-Za-z0-9\D]+?)(?=JOOM)/" Кто знает, помогите пожалуйста. |
alert('JOOMtest1*test2JOOM'.replace(/\*.+?JOOM/g,'JOOM')) Но вообще не понятно насколько свободной может быть строчка, приведите пару примеров, если вышенаписанное не подойдёт. |
Спасибо, вроде подходит)
|
Aetae, а чего не так?
alert('JOOMtest1*test2JOOM'.replace(/\*test2/g,'')) |
Потому и написал - что хз какая строка.
Мож там у него JOOMblablabla*parampampamJOOM.(что косвенно подтверждается приведённым им regexp'oм) Потому и флаг g кстати. |
Цитата:
Цитата:
|
Цитата:
|
А как использовать в выражении переменную?
т.е. вот выражние /\*.+?\JOOM/g Но у меня "JOOM" переменчив, как мне такое осуществить? |
var text = "JOOM или что-то другое"; alert('JOOMtest1*test2JOOM'.replace(new RegExp("\\*.+?" + text, "g"), text)) |
Не работает..
Вот например такой случай: <script language="JavaScript" type="text/javascript"> var text = "JOOMtest1*"; alert('JOOMtest1*test2JOOMtest3%test4JOOM'.replace(new RegExp("\\*.+?" + text, "g"), text)); </script> Должно вывестись JOOMtest1JOOMtest3%test4JOOM, а выводит JOOMtest1JOOMtest1*3%test4JOOM P.S. Блин, как сделать чтобы можно было запустить код? |
Цитата:
var text = "JOOM"; Во вторых: * и % - разные вещи. Если надо и то и то: var text = "JOOM"; alert('JOOMtest1*test2JOOMtest3%test4JOOM'.replace(new RegExp("[*%].+?" + text, "g"), text)); Потому я и спрашивал в начале о вариантах строк. Цитата:
|
Цитата:
alert('JOOMtest1*test2JOOMtest3%test4JOOM'.replace(/\*test2/g,'')) |
Тоже не работает,
var text = "JOOM"; alert('JOOMtest1*test2JOOMtest3*test4JOOM'.replace(new RegExp("[*%].+?" + text, "g"), text)); Выводит JOOMtest1JOOMtest3JOOM А надо : JOOMtest1JOOMtest3%test4JOOM |
Цитата:
|
Цитата:
var text = "\*test2"; alert('JOOMtest1*test2JOOMtest3*test4JOOM'.replace(new RegExp("/" + text, "g"), '')); Работает, большое спасибо, но я "test2" не знаю, там может быть всё что угодно.. Если б знал то воспользовался str_replace и не мучался... Как можно сделать, если я знаю только test1 |
MCTrane, ты меня убиваешь... :D Ты можешь сформулировать задачу?
|
Думай головой. Самый первый вариант рабочий.
|
Цитата:
|
MCTrane, теперь-то оно? :D
var text = "*test2"; text=new RegExp('\\'+text, "g") alert('JOOMtest1*test2JOOMtest3*test4JOOM'.replace(text, '')); |
Цитата:
JOOMtest1*test2JOOMtest3%test4JOOMtest5%test6JOOM Я знаю только что нужно вырезать тот участок строки где есть например test1, а на участки делит "JOOM", можно конечно делать explode(), но это слишком много, и я решил через регулярные выражения. Также я хотел сделать через AJAX, но потом подумал что в JS тоже есть рег. выражения. Но с ними сложнее... Т.е. шаблон выреза что-то типа такого: JOOMtest1*[то_что_я_не_знаю]JOOM Причём "то_что_я_не_знаю" я не знаю. Цитата:
|
MCTrane, так тебе нужно убрать что-то от * (звезды) до JOOM? Или опять не то?
|
Цитата:
|
MCTrane, тогда продолжай думать над формулировкой задачи... :D
|
ksa, Ну ты же всё понял...
|
MCTrane, дело не в том что понял я... Дело в том, что таки нужно тебе. ;)
|
Ну мне надо так:
Есть строка JOOMtest1*test2JOOMtest3*test4JOOMtest5*test6JOOM В функцию поступил аргумент "test1", и эта функция должна вырезать тот участок строки где есть "test1", т.е. должно получиться после вызова такой функции так: JOOMtest3*test4JOOMtest5*test6JOOM Ещё один пример: Строка: JOOMtest1*test2JOOMtest3*test4JOOMtest1*test2JOOMt est5*test6JOOM Аргумент: test1 Должно получиться: JOOMtest3*test4JOOMtest5*test6JOOM |
Цитата:
<!DOCTYPE html> <html> <head> <title></title> <script> function Go(Str) { var beg = 'JOOM'+Str var end = "JOOM"; var test=new RegExp(beg+'.+?'+end, "g") alert('JOOMtest1*test2JOOMtest3*test4JOOMtest1*test2JOOMt est5*test6JOOM'.replace(test,end)) } </script> </head> <body onload='Go("test1")'> </body> </html> |
ksa,Aetae Огромное спасибо за помощь.
|
MCTrane, а можешь рассказать, что это за строка и что ты вообще делаешь?
|
Цитата:
|
В этой строке просто формулы прописаны, и их надо как-то удалять при удалении элемента
|
Цитата:
MCTrane, а почему не хранить формулы в объекте (ассоциативном массиве)? var formulas = { 'test1': '<формула>', ... }; delete formulas['test1']; |
Цитата:
Ещё вопрос есть. Мне ещё надо рег. выражение которое было обратно то которое сделали, т.е. "неизвестное" будет перед "*". Я пытался делать так: var text = "test3"; var z2 = "JOOMtest1*test3JOOMtest2*test4JOOM"; var beg2 = 'JOOM'; var end2 = text+"JOOM"; var end = "JOOM"; test2=new RegExp(beg2+'+?.'+end2, "g") alert(z2.replace(test2,end)) Что-то не работает... Подскажите пожалуйста, что не так? |
Цитата:
|
Не, Aetae дважды в одной теме ленивым халявщикам не отвечает.)
|
x-yuri,
Есть строка JOOMtest2*test1JOOMtest3*test4JOOMtest5*test6JOOM В функцию поступил аргумент "test1", и эта функция должна вырезать тот участок строки где есть "test1", т.е. должно получиться после вызова такой функции так: JOOMtest3*test4JOOMtest5*test6JOOM Ещё один пример: Строка: JOOMtest2*test1JOOMtest3*test4JOOMtest1*test2JOOMt est5*test6JOOM Аргумент: test1 Должно получиться: JOOMtest3*test4JOOMtest5*test6JOOM Выше представленный код почему-то не работает.( |
что в этих строках храниться? Для чего они нужны? Кто придумал такой формат? Начни ответ так: я делаю сайт, на котором...
|
x-yuri,
Придумал формат я. Я просто пытаюсь разобраться в регулярных выражениях в js, в php разобрался, сначала вообще хотел через аякс делать, но узнал что в js тоже есть рег. выражения, только вот литературы по ним нормальной нет, на всех сайтах одно и тоже. В строке хранятся формулы. И мне надо их удалить зная только 1 элемент формулы. |
Цитата:
Цитата:
Цитата:
|
monolithed,
"вы в своем уме Ajax == JavaScript" Ну я имею ввиду делать запрос к php. monolithed, "а спецификации еще нет?" Не знаю. Блин, обьясните пожалуйста почему рег. выражение beg2+'+?.'+end2 не работает? Если я правильно понимаю то "+?" обозначает неизвестные символы, это ".", любой символ. И получается JOOM[неизвестные_символы](любой_символ)test3JOOM |
Часовой пояс GMT +3, время: 05:27. |