Javascript 正则表达式匹配星号、波浪号、破折号和方括号

Javascript 正则表达式匹配星号、波浪号、破折号和方括号,javascript,regex,Javascript,Regex,我一直在尝试编写一个正则表达式来匹配星号、波浪号、破折号和方括号 我所拥有的: const str=“那只敏捷的[棕色]狐狸**跳过了那只懒狗-----在树林里”; log(str.match(/[^\][^\[\]*\]?\\\]/g)); // [ //“这个]”, //“快”, //“[布朗]”, //“狐狸**跳**过~~~lazy dog----在空中”, //“[伍兹] // ];您可以将此正则表达式与其他选项一起使用,以包含所需的匹配项: const re=/\[^\[\]\n

我一直在尝试编写一个正则表达式来匹配星号、波浪号、破折号和方括号

我所拥有的:

const str=“那只敏捷的[棕色]狐狸**跳过了那只懒狗-----在树林里”;
log(str.match(/[^\][^\[\]*\]?\\\]/g));
// [
//“这个]”,
//“快”,
//“[布朗]”,
//“狐狸**跳**过~~~lazy dog----在空中”,
//“[伍兹]

// ];您可以将此正则表达式与其他选项一起使用,以包含所需的匹配项:

const re=/\[^\[\]\n]*\]\[\b\w+\]\[\w+\*.*.+?(?:\*\*.$)-+++.(?:^.-+.+?~[\w]+/mg;
常数arr=[
“在**一个**周日晚上,这只特别的~~敏捷的棕色狐狸跳过了那只**懒狗。”,
“敏捷的棕色狐狸跳过懒惰的[狗],
“快[棕色]狐狸**跳**过~~~~懒狗-----在树林里”
];
var n;
arr.forEach(str=>{
m=str.match(re);
控制台日志(m);

})
您可以使用此正则表达式拆分字符串。它将文本上的字符串拆分为一个分隔符(
***
~
[]
)和匹配的分隔符或字符串的开头/结尾;或一系列连字符(
-
)。它使用捕获组来确保与正则表达式匹配的字符串出现在输出数组中:

((?:\*\*|^)[A-Za-z. ]+(?:\*\*|$)|(?:~~|^)[A-Za-z. ]+(?:~~|$)|(?:\[|^)[A-Za-z. ]+(?:\]|$)|-+
const re=/((?:\*\*\\*\\\*\\\*\\*\\*\$)(?:~\\\*\\\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
常量str=[
“快[棕色]狐狸**跳**过~~~懒狗-----在[树林]里,”,
“敏捷的棕色狐狸跳过懒惰的[狗],
'敏捷的棕色狐狸跳过了懒惰的**狗',
“在**一个**周日晚上,这只特别的~~敏捷的棕色狐狸跳过了那只**懒狗。”;
str.forEach(v=>console.log(v.split(re.filter(布尔));

.as console wrapper{max height:100%!important;top:0;}
您还想匹配空格吗?从我看来,您的正则表达式除了方括号之外,似乎没有任何字符可以匹配?这就是为什么它不会分解字符串
“fox**jumps**over~~lazy dog---in the”试着测试一下这个字符串,然后在你分析更多字符时一次一个地组合正则表达式。看起来你想做的是得到一种各种类型的标记语言。如果是这样的话,你可能会想在正则表达式上考虑一个状态机方法。带有标记语言的正则表达式的问题是它们往往不是正则的,所以有限状态机更适合。我没有读过(甚至没有扫描过),但类似的内容应该让您开始:抱歉,我的问题不太清楚。我只是编辑了它,以反映我正在处理的字符串的更多示例。感谢您的回答,在这个场景中,如何让快速棕色狐狸跳下作为第一个匹配,而不是作为第一个匹配和快速棕色狐狸fox以秒级跳转而不丢失当前行为?