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

时间:2016-10-16 11:20:22

标签: javascript regex

例如,我有一个字符串“esolri.gbn43sh.earbnf”,我想删除最后一个点后的每个字符(即“esolri.gbn43sh”)。我怎么能用正则表达式这样做?

我当然可以使用非RegExp方式来做到这一点,例如:

“esolri.gbn43sh.earbnf” .slice( “esolri.gbn43sh.earbnf” .lastIndexOf()+ 1 “”);

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

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

我正在使用Javascript。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

我会使用标准的j而不是正则表达式,因为其他人更容易理解你的代码

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

答案 1 :(得分:0)

模式匹配

匹配一个点后跟非点,直到字符串

结束
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"