我如何使一个正则表达式意味着/某个字符串/后面有一个换行符或没有

How would I make a regular expression that would mean /some string/ either followed by a line break or not?

本文关键字:有一个 换行符 何使一 正则表达式 意味着 字符串      更新时间:2023-09-26
function(input){
    return input.replace(/teststring/ig, "adifferentstring");
}

我想将"teststring"answers"teststring'n"替换为"adifferentstring"

在正则表达式中,为了匹配特定的字符,可以将其放在括号中:

['n]

要使匹配成为"可选的",可以在后面加上?:

['n]?

在您的确切示例中,完整的正则表达式可以是:

teststring['n]?

那么,你的函数看起来像:

function replace(input) {
    return input.replace(/teststring['n]?/ig, "adifferentstring");
}

我建议在括号中使用匹配的字符,因为这便于扩展;例如,考虑您想要匹配windows的换行符(回车+换行符):

teststring['r'n]?

Try

function(input){
   return input.replace(/teststring'n?/ig, "adifferentstring");
}

试试.replace(/teststring['n]?/ig,"adifferentstring");

应该是这样的:

var re = /teststring(['n]?)/ig;

那么你的replace语句应该是这样的:

return input.replace(re,"adifferentstring");

这是一个显示正则表达式工作原理的小提琴。

然后是显示替换操作工作的小提琴。

编辑:

实际上,进一步考虑这个问题,如果您的regex确实匹配回车或新行字符,则需要将其放回替换字符串中。我最初发布的相同的正则表达式将起作用,但您将需要这个替换语句(用$1表示括号中的第一组)。

return input.replace(re,"adifferentstring$1");

小提琴