Javascript 如何使用Regex实现这个结果?
给定下面的输入,在javascript中给出所需输出的正则表达式是什么?我必须在不使用多行标志的情况下实现这一点 输入 所需输出(保持相同的行数,但将Javascript 如何使用Regex实现这个结果?,javascript,regex,Javascript,Regex,给定下面的输入,在javascript中给出所需输出的正则表达式是什么?我必须在不使用多行标志的情况下实现这一点 输入 所需输出(保持相同的行数,但将=插入空行) 实际输出(使用正则表达式/[^a-zA-Z0-9.*]+\n/替换为=\n;它以某种方式删除了两个连续的“\n”中的一个) 您可以尝试以下替换函数的组合: str=“\n\nabc def.\n\n*\n\n”; str=str.replace(/\n/g,=\n”); str=str.replace(/(.)=\n/g,“$1\n
=
插入空行)
实际输出(使用正则表达式/[^a-zA-Z0-9.*]+\n/
替换为=\n
;它以某种方式删除了两个连续的“\n”中的一个)
您可以尝试以下替换函数的组合:
str=“\n\nabc def.\n\n*\n\n”;
str=str.replace(/\n/g,=\n”);
str=str.replace(/(.)=\n/g,“$1\n”);
console.log(str)代码>这应该与两个替换一起工作:
value.replace(/^\n/,'=\n')。replace(/\n\n/g,'\n=\n')
- 如果第一行以空行开头,则第一个
replace
将处理第一行
- 第二个
replace
处理其他行:在空行中添加=
与在两个连续\n
之间插入=
相同
您想要的结果是“保持相同的行数,但将=
插入空白行”
空(“空白”)行是与regex
:^$
匹配的行
^
表示输入字符串的开头,$
表示输入字符串的结尾,但如果指定了m
修饰符(它表示“多行”),^
匹配行的开头,$
匹配行的结尾
您的代码应该简单到:
input = "\n\nabc def.\n\n*\n\n";
output = str.replace(/^$/mg, '=');
如上所述,m
修饰符更改^
和$
的含义。换行符与上面的regex
不匹配,因此它们不需要出现在替换字符串中
g
修饰符指示查找并替换所有匹配的子字符串,而不仅仅是第一个子字符串(默认行为是String.replace()
)
阅读有关JavaScript的更多信息。您可以使用替换函数还是必须使用静态字符串?我可以使用替换函数您的意思是将=
插入到空白行中吗?是的,已更正。谢谢。我也找不到一个非多行正则表达式来代替这个。下面是一个示例输入,以帮助其他人在浏览器中测试他们的尝试。我得到的最接近的结果是搜索[\s\s](?=\n)
并替换为=$0
,但仍然不起作用。我试图使用正向前瞻(?=)
不使用下一行,这样它也可以匹配。
=\n
=\n
abc def.\n
=\n
*\n
=\n
=\n
abc def.=\n
*=\n
input = "\n\nabc def.\n\n*\n\n";
output = str.replace(/^$/mg, '=');