我有以下字符串,我希望从中将<br>
的前两次出现替换为\n
字符。
<br><br><br>. Do not replace <br> here.
1. One
2. Two
3. Three<br><br><br>End of List. Replace first two <br> with \n
New line follows.
<br><br><br>. Do not replace <br> here.
我确实写了我的正则表达式here。我对regex非常陌生,我敢肯定这不是一个优化的解决方案。
经过一些尝试,我能够选择<br><br>
作为捕获组。
我希望这个第三个捕获组成为我的选定匹配,因此我可以轻松地用\n
替换它。
有人可以帮我弄这个吗?
我的预期输出是:
<br><br><br>. Do not replace <br> here.
1. One
2. Two
3. Three\n<br>End of List. Replace first two <br> with \n
New line follows.
<br><br><br>. Do not replace <br> here.
var str = `1. One
2. Two
3. Three<br><br><br>End of List
New line follows
`
console.log(
str.match(/[\n\r].*(\d\.\s+)(?!.*[\n\r](\d\.\s+)).*((<br\s*\/?>){2})/)
);
答案 0 :(得分:1)
怎么样:
const initialString = `1. One
2. Two
3. Three<br><br><br>End of List
New line follows
`;
console.log(initialString.replace(/<br>?<br>/g, "\n\n"));
// or do you mean:
console.log(initialString.replace(/<br>?(<br>){1,}/g, "\n\n"));
答案 1 :(得分:1)
也许这个正则表达式可以帮助您:
/(?:(([0-9])+.([\w]| ))*)<br><br>/g
它指出要匹配的字符串必须以数字开头,后跟。和一些文字,然后是您的图案
。使用?:您将创建一个非捕获组,因此仅替换
。
希望这会有所帮助。
var str = `1. One
2. Two
3. Three<br><br><br>End of List
New line follows
`;
console.log(str.replace(/(?:(([0-9])+.([\w]| ))*)<br><br>/g, '\n'));
答案 2 :(得分:1)
尝试一下。
VS
答案 3 :(得分:0)
我认为这应该对您有用:
str.replace(/ <\ br> <\ br> / g,'\ n');