Javascript 递增复制的字符串编号

Javascript 递增复制的字符串编号,javascript,regex,Javascript,Regex,我有一个用户列表,有一个复制操作,通过将Copy后缀添加到用户名来复制所选用户 因此,如果有john用户名,则复制操作将创建john copy 1,如果现在用户复制此“john copy 1”,则将有“john copy 2”,依此类推 这是我正在使用的代码 private _getDuplicateUserName(userName: string, suffixIndex): string { let _duplicateName; if (userName.includes

我有一个用户列表,有一个复制操作,通过将Copy后缀添加到用户名来复制所选用户

因此,如果有john用户名,则复制操作将创建john copy 1,如果现在用户复制此“john copy 1”,则将有“john copy 2”,依此类推

这是我正在使用的代码

private _getDuplicateUserName(userName: string, suffixIndex): string {
    let _duplicateName;
    if (userName.includes("Copy")) {
        _duplicateName = userName.replace(/(\d+)+/g, (match, number) => {
            const index = parseInt(number, 10) + 1;
            return index.toString();
        });
        // for next iteration if this duplicate name exists
        userName = _duplicateName;
    } else {
        _duplicateName = `${userName} Copy ${suffixIndex}`;
    }
    console.log(_duplicateName);
    const _isSameName = this.users.find((_user: User) => _user.userName === _duplicateName);
    if (_isSameName) {
        return this._getDuplicateUserName(userName, suffixIndex + 1);
    } else {
        return _duplicateName;
    }
}
创建重复用户名后,我将新用户推送到具有重复用户名的
this.users

这是可行的,但问题是如果存在用户名john copy 1 copy 1它将与john copy 2 copy 2进行复制


我只需要替换最后一个值,我想需要更改regex,这方面有什么帮助吗?

简单的任务可以通过简单的逻辑解决,例如使用array.length获取最后一个字符

var name='John';
函数changeName(用户名){
if(username.includes('Copy')){
const last=username[username.length-1]
const count=parseInt(last)//检查整数是否有效
如果(计数){
username=username.replace(/.$/,count+1)//替换最后一个字符
}否则{
用户名+=‘复制1’;
}
}否则{
用户名+=‘复制1’;
}
名称=用户名;
console.log('name',name);
}
更改名称(名称)
更改名称(名称)
更改名称(名称)
更改名称(名称)

changeName(name)
我们如何知道何时实际遇到了用户名?我们如何知道可能存在多少个
copy
字符串?请使用
userName.replace(/.*\b(\d+)/g,…
获取最后一个字符串number@anubhava但是我们需要一个回调正则表达式替换,为了执行增量
:-)
@TimBiegeleisen,我创建了一个新用户,并使用重复的uer名称将其推送到users对象。