我有这种字符串(打开和关闭装饰器):
####--- foobar ---###
### -- foobar -- ###
####-- foobar ---##
--- foobar ---
### foobar ##
### foo - bar ##
我正在努力:
我试过这两个RegExp:
/-*\s*#*/g;
/#*\s*-*/g
但问题是那些甚至会匹配零个字符。
如果序列中至少有两个##
或--
,我怎么能告诉我的RegExp才匹配?
我需要我的RegExp显然匹配整个装饰器(### ---
)而不仅仅是它的一部分。这样我就可以从字符串中删除它们,只获得中间的标题(foobar
或foo - bar
)
答案 0 :(得分:1)
您可以使用此正则表达式:
/\s*([#-])\1+\s*/g
或使用[ \t]
代替\s
来匹配空格或制表符:
[ \t]*([#-])\1+[ \t]*
并在.replace
中使用它来删除装饰器:
str = str.replace(/[ \t]*([#-])\1+[ \t]*/g, '');
RegEx分手:
([#-])
:在第1组中匹配并分组#
或-
\1+
:\1
是我们在第1组中捕获的内容的反向引用。 \1+
我们匹配相同重复字符的1个字符。