Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите составить регулярное выражение (https://javascript.ru/forum/misc/14205-pomogite-sostavit-regulyarnoe-vyrazhenie.html)

Aetae 06.01.2011 13:23

Цитата:

Сообщение от MCTrane (Сообщение 86471)
Не работает..
Вот например такой случай:
<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

Во-первых:
var text = "JOOM";

Во вторых:
* и % - разные вещи.

Если надо и то и то:
var text = "JOOM";
alert('JOOMtest1*test2JOOMtest3%test4JOOM'.replace(new RegExp("[*%].+?" + text, "g"), text));

Потому я и спрашивал в начале о вариантах строк.

Цитата:

Сообщение от MCTrane (Сообщение 86471)
P.S. Блин, как сделать чтобы можно было запустить код?

[JS run]/[HTML run]

ksa 06.01.2011 13:26

Цитата:

Сообщение от MCTrane
Должно вывестись JOOMtest1JOOMtest3%test4JOOM

Так вот...
alert('JOOMtest1*test2JOOMtest3%test4JOOM'.replace(/\*test2/g,''))

MCTrane 06.01.2011 13:27

Тоже не работает,
var text = "JOOM";
alert('JOOMtest1*test2JOOMtest3*test4JOOM'.replace(new RegExp("[*%].+?" + text, "g"), text));

Выводит JOOMtest1JOOMtest3JOOM
А надо : JOOMtest1JOOMtest3%test4JOOM

MCTrane 06.01.2011 13:28

Цитата:

Сообщение от ksa (Сообщение 86476)
Так вот...
alert('JOOMtest1*test2JOOMtest3%test4JOOM'.replace(/\*test2/g,''))

Сейчас попробую

MCTrane 06.01.2011 13:31

Цитата:

Сообщение от ksa (Сообщение 86476)
Так вот...
alert('JOOMtest1*test2JOOMtest3%test4JOOM'.replace(/\*test2/g,''))

var text = "\*test2";
alert('JOOMtest1*test2JOOMtest3*test4JOOM'.replace(new RegExp("/" + text, "g"), ''));

Работает, большое спасибо, но я "test2" не знаю, там может быть всё что угодно.. Если б знал то воспользовался str_replace и не мучался...
Как можно сделать, если я знаю только test1

ksa 06.01.2011 13:34

MCTrane, ты меня убиваешь... :D Ты можешь сформулировать задачу?

Aetae 06.01.2011 13:41

Думай головой. Самый первый вариант рабочий.

MCTrane 06.01.2011 13:51

Цитата:

Сообщение от Aetae (Сообщение 86486)
Думай головой. Самый первый вариант рабочий.

Нет, а если тот элемент который нужно вырезать, последний или в середине?

ksa 06.01.2011 13:55

MCTrane, теперь-то оно? :D

var text = "*test2";
text=new RegExp('\\'+text, "g")
alert('JOOMtest1*test2JOOMtest3*test4JOOM'.replace(text, ''));

MCTrane 06.01.2011 13:57

Цитата:

Сообщение от ksa (Сообщение 86483)
MCTrane, ты меня убиваешь... :D Ты можешь сформулировать задачу?

У меня есть например строка:
JOOMtest1*test2JOOMtest3%test4JOOMtest5%test6JOOM
Я знаю только что нужно вырезать тот участок строки где есть например test1, а на участки делит "JOOM", можно конечно делать explode(), но это слишком много, и я решил через регулярные выражения.
Также я хотел сделать через AJAX, но потом подумал что в JS тоже есть рег. выражения. Но с ними сложнее...
Т.е. шаблон выреза что-то типа такого:
JOOMtest1*[то_что_я_не_знаю]JOOM
Причём "то_что_я_не_знаю" я не знаю.
Цитата:

Сообщение от ksa (Сообщение 86488)
MCTrane, теперь-то оно? :D

var text = "*test2";
text=new RegExp('\\'+text, "g")
alert('JOOMtest1*test2JOOMtest3*test4JOOM'.replace(text, ''));

Я же говорю test2 я не знаю, я знаю только test1 или test3, а test2 и test4 не знаю


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