te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - How to find and replace every nth character occurrence using regex? - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to find and replace every nth character occurrence using regex? - Stack Overflow

programmeradmin3浏览0评论

How can I find and replace for example every third occurrence of 'x' character in string with regular expression?

There is similar question but it addresses every fourth character but I need every "nth" occurrence of specific character in string.

I'm using JavaScript replace() method, this below example will change every x character to y:

replace(/\x/g, 'y')

But how can I write regex for question above?

Some random text for example, and expected result:

I amx nexver axt hoxme on Sxundxaxs.

to:

I amx nexver ayt hoxme on Sxundyaxs.

I can use JS for loop with split() and join() but solution with replace() method seams more elegant.

How can I find and replace for example every third occurrence of 'x' character in string with regular expression?

There is similar question but it addresses every fourth character but I need every "nth" occurrence of specific character in string.

I'm using JavaScript replace() method, this below example will change every x character to y:

replace(/\x/g, 'y')

But how can I write regex for question above?

Some random text for example, and expected result:

I amx nexver axt hoxme on Sxundxaxs.

to:

I amx nexver ayt hoxme on Sxundyaxs.

I can use JS for loop with split() and join() but solution with replace() method seams more elegant.

Share Improve this question edited Mar 14, 2021 at 8:09 ZygD 24.4k41 gold badges103 silver badges137 bronze badges asked Jun 29, 2018 at 8:02 mark0maticmark0matic 731 gold badge1 silver badge4 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 14

You can use:

str = str.replace(/((?:[^x]*x){2}[^x]*)x/g, '$1y');

So if you are searching for every 3rd occurrence then use n-1 between {} in above regex.

To build it dynamically use:

let str = 'I amx nexver axt hoxme on Sxundxaxs';
let n = 3;
let ch = 'x';

let regex = new RegExp("((?:[^" +ch+ "]*" +ch+ "){" + (n-1) + "}[^" +ch+ "]*)" +ch, "g");

str = str.replace(regex, '$1y');

console.log(str);
//=> I amx nexver ayt hoxme on Sxundyaxs

RegEx Demo

发布评论

评论列表(0)

  1. 暂无评论