2013-02-26 2 views
0

У меня есть текст с шаблонами, например,% text% внутри. Как я могу получить эти шаблоны в javascript, чтобы обернуть их в промежутки и изменить цвет?Соответствие шаблону в тексте javascript

Спасибо!

+2

Это неясно. Можете ли вы быть более конкретными, чем 'like% text%'? – crush

+0

@crush, он может также содержать числа 'like% text2%'. Это помогает? – gbtimmon

+3

Каково значение '%' в строке? Является ли эта часть строки, или она должна быть подстановочным символом? Вы только говорите, что хотите что-то, что окружено '%' для соответствия? – crush

ответ

0

Используйте Regex

if (String.match(/text/gi)) { 
    //wrap span around String and change color of CSS 
} 
+0

Я думаю, что он пытается использовать '%' как разделитель «токенов». Например, в строке: 'Hi,% Jack%. Добро пожаловать на сайт. ', Он заменит'% Jack% 'на' Jack '. Ваш подход прав, просто нужно включить соответствие '%', я считаю. – crush

+0

my bad Я думал, что это подстановочный знак, как в SQL. У MikeM есть правильная идея. – aug

0

Если шаблон между % с всегда чистым текстом (без пробелов и т.д.), вы можете сделать что-то вроде этого:

text = text.replace(/%\w*%/g, function (txt) { 
    return '<span style="color: red">' + txt.substring(1, txt.length-1) + '</span>'; 
}); 

Хотя сопоставление с образцом MikeM является далеко вперед, я оставляю этот ответ, чтобы показать, как вы также можете использовать функцию для манипулирования совпадающей строкой или даже получить какой-то другой материал в зависимости от соответствия.

+0

Может также легко добавить поддержку чисел. Я думаю, главное - не допускать пробелов. В противном случае: 'Hello,% Jack%, ​​что% ваша профессия%?' Может соответствовать: 'Jack',' what is' и 'your profession'. – crush

+1

Зачем использовать '.substring()', когда вы можете использовать группы захвата? 'text.replace (/% (\ w *)%/gi, ' $ 1');' Также, –

+0

'\ w' содержит числа. – MikeM

2
var str = 'Some text with patterns like %text% inside.'; 

str = str.replace(/%([^%]+)%/g, '<span style="color: blue">$1</span>');  
// Some text with patterns like <span style="color: blue">text</span> inside. 
Смежные вопросы