在 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+
_?
是或条件有或没有 _
- 并与
d+
一起使用它将匹配 v1&v2
末尾的数字
var input1 = '/api/v1'
var input2 = '/_api/v1'
console.log(input1.replace(/\/_?api\/v\d+/g, '/'))
console.log(input2.replace(/\/_?api\/v\d+/g, '/'))
输入
'/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+
_?
是或条件有或没有_
- 并与
d+
一起使用它将匹配v1&v2
末尾的数字
var input1 = '/api/v1'
var input2 = '/_api/v1'
console.log(input1.replace(/\/_?api\/v\d+/g, '/'))
console.log(input2.replace(/\/_?api\/v\d+/g, '/'))