Javascript 将字符串与正则表达式匹配

Javascript 将字符串与正则表达式匹配,javascript,regex,photoshop-script,Javascript,Regex,Photoshop Script,我需要一个JavaScript正则表达式的帮助(对于Photoshop脚本),以匹配字符串中单词周围的粗体标记。(此时不担心斜体或粗体)。 我不想在这个阶段分割字符串,我只想用match把它分割成某些交替的块 // Be <b>bold!</b> Be fabulous! //大胆一点!太棒了! 应该匹配到//(“Be”,“bold!”,“Be fabric!”)//行注释的原因很明显 在那之后,我将删除粗体标记-除非正则表达式可以一次性完成-不要低估它的威力 这就

我需要一个JavaScript正则表达式的帮助(对于Photoshop脚本),以匹配字符串中单词周围的粗体标记。(此时不担心斜体或粗体)。 我不想在这个阶段分割字符串,我只想用match把它分割成某些交替的块

// Be <b>bold!</b> Be fabulous! 
//大胆一点!太棒了!
应该匹配到//(“Be”,“bold!”,“Be fabric!”)//行注释的原因很明显

在那之后,我将删除粗体标记-除非正则表达式可以一次性完成-不要低估它的威力

这就是我目前所拥有的

(.*?)([<b>]+[\S]+[<\/b>]+[\s]+)+(.*)/g
(.*)([]+[\S]+[]+[\S]+)+(.*)/g
只是它并不完全匹配

记录在案,在任何人提出更简单的JS解决方案之前: 在Photoshop DOM中,不能将常规文本与粗体混合编写脚本。您可能可以使用Action Manager代码,但如果要生成文本,这可能会是一个很大的难题。 为了解决这个问题(这不是一个理想的解决方案),我将使用常规文本&在适当的位置将其拆分并换成粗体。

[]
是字符类,只需使用
即可

/(.*?)(<b>+\S+<\/b>+\s+)+(.*)/g
您可以尝试:

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

更好尝试使用
String.split()
函数:

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

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

似乎到regex101的链接是错误的。您只想删除粗体标记吗?是的!我正在研究:)@user3218114。是的,只是担心动量的粗体标记方括号界定了一个字符类,而不是一个组。如果这可以用于多行(包括回车),那将是一个赢家@食尸鬼:它应该使用
m
修饰符(多行模式)工作。看,这就是我的想法,但它没有捕获所有文本:@G:尝试删除正则表达式开头和结尾的
(.*)
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! 
var re = /\s*<\/?b>\s*/gi;
var str = 'Be <b>bold!</b> Be fabulous!';

console.log(str.split(re));
["Be", "bold!", "Be fabulous!"]