正则表达式匹配某字符串

有如下字符串:ab阿c126你好123#121a不bc13ab你好a1b35#a791啊326bop你好cagf1#38a好1

需要匹配到不包含“你好.*?#”这些字符串(“你好”与“#”之间的字符是变量),匹配结果如下:
ab阿c126121a不bc13aba791啊326bop38a好1

请问相应正则如何书写?
我用[^你好.*?#]匹配,中间变量也匹配出来了

阅读 8.2k
3 个回答

这个场景使用replace更快更便捷!也不会改变原始字符串。 纯用js的正则想要匹配出 某个字符的所有字符串,很难,所以我才推荐你使用逆向思考,替换掉你想要排除的字符串。

var x= 'ab阿c126你好123#121a不bc13ab你好a1b35#a791啊326bop你好cagf1#38a好1';
var y = x.replace(/你好.*?#/g, "");
console.log(y);
var str = 'abc126你好123#a791abc13ab你好a1b35#a791326bop你好cagf1#a791'
var newStr = str.replace(/[\u4f60|\u597d|\.|\*|\?|\#]/g, '');

console.log(newStr); 
// 输出'abc126a791abc13aba791326bopa791'

中文需要转unicode码,.*?#这些字符也要转义
var str="ab阿c126你好123#121a不bc13ab你好a1b35#a791啊326bop你好cagf1#38a好1";
str.split(/你好[^#]*#/);

var str="ab阿c126你好123#121a不bc13ab你好a1b35#a791啊326bop你好cagf1#38a好1";
str.replace(/你好[^#]*#/g,"");
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进