Javascript 如何使用Regex实现这个结果?

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

给定下面的输入,在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”);

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, '=');