RegExp用于过滤最后一个点之后的字符

RegExp to filter characters after the last dot

本文关键字:之后 字符 最后一个 用于 过滤 RegExp      更新时间:2023-09-26

例如,我有一个字符串"esolri.gbn43sh "。earbnf",我想删除最后一个点之后的每个字符(即。"esolri.gbn43sh")。我如何用正则表达式做到这一点?

我当然可以用非regexp的方式来做,例如:

" esolri.gbn43sh.earbnf " .slice("esolri.gbn43sh.earbnf .lastIndexOf("。")+ 1);

但是我想要一个正则表达式。

我尝试了/'..*?/,但删除了第一个点。

我正在使用Javascript。

我将使用标准js而不是正则表达式,因为它将更容易让别人理解你的代码

var str = 'esolri.gbn43sh.earbnf'
console.log(
  str.slice(str.lastIndexOf('.') + 1)
)

模式匹配

匹配点后面跟着非点,直到字符串

结束
let re = /'.[^.]*$/;

将此与String.prototype.replace一起使用以获得所需的输出

'foo.bar.baz'.replace(re, ''); // 'foo.bar'

其他选择

您可能会发现对最后一个.进行简单的子字符串搜索,然后对该索引使用字符串切片方法更有效。

let str = 'foo.bar.baz',
    i = str.lastIndexOf('.');
if (i !== -1) // i = -1 means no match
    str = str.slice(0, i); // "foo.bar"