在 javascript 中替换的正则表达式

regex to replace in javascript

输入

'/api/v1' or '/_api/v1'

输出

'/'

我可以这样做

const output = input.replace('/api/v1', '/').replace('/_api/v1', '/');

但很好奇我们如何在 replace 方法中利用 regex,并一次性完成?

使用 ? 元字符简单地制作下划线 optional

// using the constructor here to avoid all that forward-slash escaping
const rx = new RegExp('/_?api/v1')
const inputs = ['/api/v1', '/_api/v1']

inputs.forEach(input => {
  console.info(input, ' becomes ', input.replace(rx, '/'))
})

您可以使用简单的或条件 |:

正则表达式:/api/v1|/_api/v1

与 javascript:

const output = input.replace(/\/api\/v1|\/_api\/v1/g, '/');

试试这个模式\/_?api\/v\d+

  1. _? 是或条件有或没有 _
  2. 并与 d+ 一起使用它将匹配 v1&v2
  3. 末尾的数字

Demo Regex and explanation

var input1 = '/api/v1'
var input2 = '/_api/v1'

console.log(input1.replace(/\/_?api\/v\d+/g, '/'))
console.log(input2.replace(/\/_?api\/v\d+/g, '/'))