Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите с регуляркой (https://javascript.ru/forum/misc/49515-pomogite-s-regulyarkojj.html)

vanicon 16.08.2014 16:08

Помогите с регуляркой
 
Всем привет.
Нужно в тексте обернуть текст вида: #[a-z0-9] ссылкой, перед # может стоять любой спец.символ(в том числе и пробел) кроме #, а также и после.
Например: Текст!#тег?
Вот что смог написать:
html.replace(/([\!\$\%\^\*\(\)\-\=\+\?\.\:\;\№\"\'\,\/\s]+?)\#([A-Za-zА-Яа-я0-9ёЁ_]+)([\!\$\%\^\*\(\)\-\=\+\?\.\:\;\№\"\'\,\/\s]+?)/gm, '$1<a href="#">#$2</a>');

Иногда удаляет из текста и пробелы, которые стоят перед #.
Может можно как нибудь проще переписать выражение?

Aetae 17.08.2014 00:43

Обязательно спецсимвол перед строкой и после?
Просто так, не пойдёт?
html.replace(/([^#])(#[a-zа-я0-9ё_]+)/gi, '$1<a href="#">$2</a>');


P.S. А съедет у тебя потому что ты про третью скобку забыл,
$1<a href="#">$2</a>*!*$3*/!*

vanicon 19.08.2014 19:18

Цитата:

Сообщение от Aetae (Сообщение 326216)
Обязательно спецсимвол перед строкой и после?

Желательно бы, но пока оставил так.
Спасибо.

Aetae 19.08.2014 19:28

Со спецсимволом так:
html.replace(/([!$%*()=+?.:;№"',\^\/\-\s])(#[a-zа-я0-9ё_]+)(?=[!$%*()=+?.:;№"',\^\/\-\s])/gi, '$1<a href="#">$2</a>');
Только вы уверены что указали все, какие нужно?)

vanicon 19.08.2014 19:45

Aetae, нужны только все пунктуационные символы, но думаю не стоит так усложнять, оставлю как есть.


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