Jean Louis Asked: 2018-08-14 23:54:37 +0800 CST2018-08-14 23:54:37 +0800 CST 2018-08-14 23:54:37 +0800 CST 如何在 Postgresql 中使用 regexp_replace 清除除字符串开头的 + 以外的所有非数字? 772 与评论相关,我想找到一种方法来清除PostgreSQL 中除字符串开头regexp_replace以外的任何非数字。+ 例如+(7)9125415501应成为+79125415501 postgresql regex 1 个回答 Voted Best Answer sticky bit 2018-08-15T02:45:43+08:002018-08-15T02:45:43+08:00 您可以将要替换的第一个字符锚定到字符串的开头并搜索不是 0 - 9 或 + 的所有内容并断言向后看,任何其他替换前面都有任何字符,因此它不是字符串的开头. regexp_replace('+(7)9125415501', '^[^0-9\+]|(?<=.)[^0-9]', '', 'g') Look behinds 是在 9.6 版中引入的。如果您处于低于该水平的水平,则只能使用前瞻性。您可以这样做,将字符串反转,而不是向后看并锚定开始,向前看并锚定结束。最后反转它。 reverse(regexp_replace(reverse('+(7)9125415501'), '[^0-9](?=.)|[^0-9\+]$', '', 'g'))
您可以将要替换的第一个字符锚定到字符串的开头并搜索不是 0 - 9 或 + 的所有内容并断言向后看,任何其他替换前面都有任何字符,因此它不是字符串的开头.
Look behinds 是在 9.6 版中引入的。如果您处于低于该水平的水平,则只能使用前瞻性。您可以这样做,将字符串反转,而不是向后看并锚定开始,向前看并锚定结束。最后反转它。