删除最后n个字符的正则表达式

3

我需要从字符串中删除最后n个字符或者从特定的字符串中删除'page'。例如:

var string = 'facebookpage';

Expected output string = 'facebook'

我想从字符串中去除'page'。
使用substring完成。
var str = "facebookpage";
str = str.substring(0, str.length - 4);

你能帮我找到更好的方法来做这件事吗?


3
如果你想要专门移除 "page" 这个词,你可以使用 replace: var str = str.replace('page', ''),否则可能没有更简单的方法。 - Andy
这是更好的方法。尽管通过正则表达式 str.replace(\w{4}$, ""); - Arunesh Singh
5
我认为用子字符串比正则表达式更好。 - Avinash Raj
3个回答

5

这个的正则表达式:

//str - string;
//n - count of symbols, for return 
function(str, n){
  var re = new RegExp(".{" + n + "}","i");
  return str.match(re);
};

编辑:

要删除最后 n 个字符:

var re = new RegExp(".{" + n + "}$","i");
return str.replace(re, "");

更新:
但是对于这个任务,使用正则表达式并不是一个好的方式;例如,对于100000次迭代的平均运行时间:

Str length solution = 63.34 ms
Regex solution      = 172.2 ms

你忘了在字符串结尾处加上 $ - Olson.dev
@Olson.dev 不对。第一种变体 - 从0到n位置返回;但是谢谢,你给了我一个想法,关于如何准确地删除最后的n个字符; - user3335966
你的原始回答没有回答问题,你的编辑版本才回答了。传递标志“i”是冗余的。 - Olson.dev

0
使用 JavaScript 的 replace 函数。
 var str = "facebookpage";
 str = str.replace('page','');

0
你可以使用这个正则表达式:
(.*)\\w{4}

代码:
var regex =(new RegExp("(.*)\\w{4}"))
val output = regex .exec("facebookpage")
// output is : ["facebookpage", "facebook"]
// output[1] is the Expected output which you want.

希望这能帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接