Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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_Replace_Markdown - Fatal编程技术网

Javascript 行开始处的正则表达式匹配字符串分组

Javascript 行开始处的正则表达式匹配字符串分组,javascript,regex,replace,markdown,Javascript,Regex,Replace,Markdown,我有这样一个降价字符串: var str = " # Title here Some body of text ## A subtitle ##There may be no space after the title hashtags Another body of text with a Twitter #hashtag in it"; 现在,我想匹配并替换所有标题标签,为它们添加另一个标签。但是我需要避免在文本行中匹配标签(twitter标签)。我正在努力实现以下目标

我有这样一个降价字符串:

var str = "
  # Title here
  Some body of text
  ## A subtitle
  ##There may be no space after the title hashtags
  Another body of text with a Twitter #hashtag in it";
现在,我想匹配并替换所有标题标签,为它们添加另一个标签。但是我需要避免在文本行中匹配标签(twitter标签)。我正在努力实现以下目标:

var str = "
  ## Title here
  Some body of text
  ### A subtitle
  ###There may be no space after the title hashtags
  Another body of text with a Twitter #hashtag in it";
到目前为止,我已经有了这个正则表达式,它完成了这项工作,但也与twitter标签匹配:

str = str.replace(/(#+)/g, "$1#");

每行文本后都有回车符。如何在不影响文本中的哈希标记的情况下实现此替换。

如果添加
/m
,则可以使用
^
匹配行的开头(没有
/m
,它只匹配整个字符串的开头)。
然后,您可以使用
\s*
(感谢stribizhev)保留每行开头的所有空白

str = str.replace(/^\s*#+/gm, "$&#");
演示:

//请注意,多行字符串在JavaScript中实际上并不合法
var str=[
“#标题在这里”,
“某些正文”,
“##一个副标题”,
“##标题标签后可能没有空格”,
“另一个带有Twitter标签的文本体”
].join('\n');
document.write(str.replace(/^\s*#+/gm,“$&#”)
/*仅用于演示*/

正文{whitespace:pre-line;font-family:monospace}
如果添加
/m
,可以使用
^
匹配行的开头(如果没有
/m
,它只匹配整个字符串的开头)。
然后,您可以使用
\s*
(感谢stribizhev)保留每行开头的所有空白

str = str.replace(/^\s*#+/gm, "$&#");
演示:

//请注意,多行字符串在JavaScript中实际上并不合法
var str=[
“#标题在这里”,
“某些正文”,
“##一个副标题”,
“##标题标签后可能没有空格”,
“另一个带有Twitter标签的文本体”
].join('\n');
document.write(str.replace(/^\s*#+/gm,“$&#”)
/*仅用于演示*/

正文{whitespace:pre-line;font-family:monospace}
如果添加
/m
,可以使用
^
匹配行的开头(如果没有
/m
,它只匹配整个字符串的开头)。
然后,您可以使用
\s*
(感谢stribizhev)保留每行开头的所有空白

str = str.replace(/^\s*#+/gm, "$&#");
演示:

//请注意,多行字符串在JavaScript中实际上并不合法
var str=[
“#标题在这里”,
“某些正文”,
“##一个副标题”,
“##标题标签后可能没有空格”,
“另一个带有Twitter标签的文本体”
].join('\n');
document.write(str.replace(/^\s*#+/gm,“$&#”)
/*仅用于演示*/

正文{whitespace:pre-line;font-family:monospace}
如果添加
/m
,可以使用
^
匹配行的开头(如果没有
/m
,它只匹配整个字符串的开头)。
然后,您可以使用
\s*
(感谢stribizhev)保留每行开头的所有空白

str = str.replace(/^\s*#+/gm, "$&#");
演示:

//请注意,多行字符串在JavaScript中实际上并不合法
var str=[
“#标题在这里”,
“某些正文”,
“##一个副标题”,
“##标题标签后可能没有空格”,
“另一个带有Twitter标签的文本体”
].join('\n');
document.write(str.replace(/^\s*#+/gm,“$&#”)
/*仅用于演示*/


正文{whitespace:pre-line;font-family:monospace}
我想应该使用
\s*
,否则不会修改没有前导空格的行。没有必要将整个模式包含在一个捕获组中,使用
$&
反向引用。@Stribizev是的,谢谢你,编辑了我的答案。谢谢!我猜应该使用
\s*
,否则不会修改没有前导空格的行。没有必要将整个模式包含在一个捕获组中,使用
$&
反向引用。@Stribizev是的,谢谢你,编辑了我的答案。谢谢!我猜应该使用
\s*
,否则不会修改没有前导空格的行。没有必要将整个模式包含在一个捕获组中,使用
$&
反向引用。@Stribizev是的,谢谢你,编辑了我的答案。谢谢!我猜应该使用
\s*
,否则不会修改没有前导空格的行。没有必要将整个模式包含在一个捕获组中,使用
$&
反向引用。@Stribizev是的,谢谢你,编辑了我的答案。谢谢!我需要的是你的
var str=…
是有效的JS语法吗?@anubhava它肯定不是。你的
var str=…
是有效的JS语法吗?@anubhava它肯定不是。你的
var str=…
是有效的JS语法吗?@anubhava它肯定不是。