2013-02-26 43 views
0

我有一个文本,里面有%text%的模式。 我怎样才能得到这种模式在JavaScript中包裹跨度和改变颜色?JavaScript文本中的模式匹配

谢谢!

+2

这是不明显的。你能比'%text%'更具体吗? – crush 2013-02-26 17:09:17

+0

@crush,它也可能包含数字'like%text2%'。这有帮助吗? – gbtimmon 2013-02-26 17:20:34

+3

字符串中'%'的含义是什么?是字符串的一部分,还是它是一个通配符?你只是说你想让'%'包围的东西被匹配吗? – crush 2013-02-26 17:21:28

回答

0

使用Regex

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

我想他正在试图做的是使用'%'作为“标记”分隔符。例如,在字符串中:'Hi,%Jack%。欢迎来到这个网站.',它会用' Jack'替换'%Jack%'。你的方法是对的,只需要包括匹配我相信的'%'。 – crush 2013-02-26 17:29:23

+0

我的不好我认为这是一个像SQL一样的通配符。 MikeM有正确的想法。 – aug 2013-02-26 19:46:55

0

如果% S之间的模式始终是纯文本(不计空格等),你可以做这样的事情:

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

虽然MikeM的匹配模式在我的前面,我留下这个答案来展示,你怎么也可以使用一个函数来操作匹配的字符串,甚至可以完成其他一些事情,具体取决于匹配。

+0

也可以轻松添加对号码的支持。我认为最主要的是不允许空格。否则:'你好,%杰克%什么是你的职业%?'可以匹配:'杰克','什么是'和'你的职业'。 – crush 2013-02-26 17:31:36

+1

当你可以使用捕获组时,为什么要使用'.substring()'? 'text.replace(/%(\ w *)%/ gi,' $ 1');'此外, – 2013-02-26 17:31:57

+0

'\ w'包含数字。 – MikeM 2013-02-26 17:50:21

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.