匹配字符串与正则表达式

时间:2014-08-12 09:38:54

标签: javascript regex photoshop-script

我需要帮助使用JavaScript中的Regex(对于Photoshop脚本)来匹配字符串中单词的粗体标记。 (此时并不担心斜体或粗体)。 我不想在这个阶段拆分字符串,我只是想把它切成某些交替的块来使用匹配。

// Be <b>bold!</b> Be fabulous! 

应该匹配//(&#34; Be&#34;,&#34; 粗体!&#34;,&#34;太棒了!&#34;) //行注释因为显而易见的原因

在那之后,我将删除粗体标签 - 除非Regex可以一次性完成 - 不要低估它的力量!

这是我到目前为止所拥有的

(.*?)([<b>]+[\S]+[<\/b>]+[\s]+)+(.*)/g

只有它与seen here

的所有内容都不匹配

仅仅是为了记录,在任何人建议更简单的JS解决方案之前: 在Photoshop DOM中,您不能编写用粗体混合的常规文本。您可能可以使用Action Manager代码,但生成可能非常令人头疼的文本。 为了解决这个问题(不是理想的解决方案),我将使用常规文本&amp;把它分成适当的地方&amp;交换为粗体。

2 个答案:

答案 0 :(得分:1)

[<b>]是字符类,只需使用<b>

/(.*?)(<b>+\S+<\/b>+\s+)+(.*)/g

并将\S更改为[^<]

/(.*?)(<b>+[^<]+<\/b>+\s+)+(.*)/g

答案 1 :(得分:1)

您可以尝试:

<b>(.*?)<\/b>

这是online demo

示例代码:

var re = /<b>(.*?)<\/b>/gi;
var str = 'Be <b>bold!</b> Be fabulous! ';
var subst = '$1';

var result = str.replace(re, subst);

输出:

Be bold! Be fabulous! 

更好尝试String.split()功能:

var re = /\s*<\/?b>\s*/gi;
var str = 'Be <b>bold!</b> Be fabulous!';

console.log(str.split(re));

输出:

["Be", "bold!", "Be fabulous!"]