Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript文本中的模式匹配_Javascript_Regex - Fatal编程技术网

javascript文本中的模式匹配

javascript文本中的模式匹配,javascript,regex,Javascript,Regex,我有一个里面有%text%图案的文本。 我如何在javascript中获得这些模式,将它们包装成跨度并改变颜色 谢谢 使用 如果%s之间的模式始终是纯文本(不包括空格等),则可以执行以下操作: text = text.replace(/%\w*%/g, function (txt) { return '<span style="color: red">' + txt.substring(1, txt.length-1) + '</span>'; }); text

我有一个里面有%text%图案的文本。 我如何在javascript中获得这些模式,将它们包装成跨度并改变颜色

谢谢

使用


如果
%
s之间的模式始终是纯文本(不包括空格等),则可以执行以下操作:

text = text.replace(/%\w*%/g, function (txt) {
    return '<span style="color: red">' + txt.substring(1, txt.length-1) + '</span>';
});
text=text.replace(/%\w*%/g,函数(txt){
返回“”+txt.substring(1,txt.length-1)+“”;
});
虽然MikeM的匹配模式远远领先于我,但我留下这个答案来说明,根据匹配情况,您还可以如何使用函数来操作匹配的字符串,甚至完成一些其他工作。

var str='一些带有%text%等模式的文本';
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.
str=str.replace(/%([^%]+)%/g,$1'); //有些文本具有类似于内部文本的模式。
这是不清楚的。你能比像%text%这样的
更具体吗?@crush,它可能还包含像%text2%
这样的
数字。这有帮助吗?字符串中
%
的意义是什么?这是字符串的一部分,还是通配符?你是说你想让
%
包围的任何东西都匹配吗?@gbtimmon:你怎么知道它可能有数字?@Mathletics:要么我的讽刺检测器坏了,要么不是很好的讽刺>>我想他想做的是用
%
作为“标记”分隔符。例如,在字符串中:
Hi,%Jack%。欢迎访问该网站。
,它将用
杰克
取代
%Jack%
。您的方法是正确的,它只需要包括匹配
%
,我相信。我的坏消息是,我认为它是一个类似于SQL的通配符。MikeM的想法是正确的。也可以轻松添加对数字的支持。我认为最主要的是不允许有空间。否则:
Hello,%Jack%what is%your profession%?
可能匹配:
Jack
what is
,以及
your profession
。当您可以使用捕获组时,为什么要使用
.substring()
<代码>文本。替换(/%(\w*)%/gi,$1')
另外,
\w
包括数字。MDN:“以下属性已弃用。这不会影响它们在替换字符串中的使用:”。我明白了。。。也学到了一些东西,MikeM的模式似乎找到了任何东西,+1代表MikeM:)
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.