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它肯定不是。