javascript - 匹配除第一个之外的所有字符实例,无需后视
问题描述
我正在努力解决这个在 Safari 中无法正常工作的简单正则表达式:
(?<=\?.*)\?
它应该匹配每个?
,除了第一个。
我知道lookbehind 还不能在 Safari 上运行,但我需要找到一些解决方法。有什么建议么?
解决方案
您可以使用交替捕获,直到第一次出现问号。在替换中再次使用该组以使其保持不变。
在交替的第二部分,匹配一个要替换的问号。
const regex = /^([^?]*\?)|\?/g;
const s = "test ? test ? test ?? test /";
console.log(s.replace(regex, (m, g1) => g1 ? g1 : "[REPLACE]"));
推荐阅读
- sql - SQL Developer 18 提示用户输入变量不起作用
- authorize-attribute - 无法导致调用自定义 AuthorizeAttribute
- javascript - 如何检查是否检查了不同选项卡中的每个复选框?
- python - 尝试容器化烧瓶应用程序时找不到文件错误-找不到文件错误python app.py返回非零代码1
- teradata-sql-assistant - Teradata SQL:对无界行求和时分组
- javascript - 在递归函数之后执行一些 JS
- c# - 将数据从文本框传输到 ASP.NET 中另一个页面上的另一个文本框
- oracle - Localhost 拒绝连接 Tibco spotfire
- logstash - 日志值可以在logstash中组合并打印最终输出吗
- javascript - Axios 获取请求返回承诺而不是 NodeJS 中的状态码