正则匹配文本里面换行,请大家帮忙看看我写的哪里有问题

    t = `
    企业要求员工
“工作要有责任
`
    t = t.replace(/([\u4e00-\u9fa5_a-zA-Z0-9])+?(\n|\r|\r\n)+?([\u4e00-\u9fa5_a-zA-Z0-9])+?/gi,'$1<br />$3');
    

为什么匹配不了,上面是从文本里面粘贴的,自带换行符,为什么替换不了呢

阅读 2.2k
3 个回答

你的问题就是+?没有识别出来,+代表1次或n次,?代表0次或者1次,但是你的这个+?就有问题了。如果你想代表0次或者n次,你可以用*
但是我觉得如果你只是替换掉换行,没必要去匹配文字,直接
t = t.replace(/(\n|\r|\r\n)/g, '<br />')

不太懂你的意思,你目前的正则本身就有问题,你要是按这种模式去匹配然后生成对应的模式,那么开头的空行和结尾的空行你是匹配不到的,直接向楼上所说的,去替换空行不就好了吗. 如果你非要按照模式去匹配那么
t = t.replace(/(n|r|rn|s)([u4e00-u9fa5_a-zA-Z0-9])(n|r|rn|s)([u4e00-u9fa5_a-zA-Z0-9])/gi,'$2$4') 写全了就好了(不知为何星号没有打上去,看图片吧);

图片描述

+?这边的逻辑有问题,改成这样([u4e00-u9fa5_a-zA-Z0-9]{0,})看看是不是你想要的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题