2013-02-26 55 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.