Javascript函数删除前导点

Pra*_*das 3 javascript regex replace

我有一个带有前导点的javascript字符串.我想使用javascript替换功能删除前导点.我尝试了以下代码.

var a = '.2.98»';
document.write(a.replace('/^(\.+)(.+)/',"$2"));
Run Code Online (Sandbox Code Playgroud)

但这不起作用.任何的想法?

Nik*_*kov 8

下面用空字符串替换字符串开头的一个点,保持字符串的其余部分不变:

a.replace(/^\./, "")
Run Code Online (Sandbox Code Playgroud)

  • @Esailija,这不是优化,这是常识.在执行正则表达式之前,您还可以在字符串中的每个字符处执行十个循环,删除这10个循环不会被称为优化而是常识.使用正则表达式引擎删除一个字符不仅仅是一种矫枉过正.它实际上所做的就是阻止一行代码(`if`行). (2认同)
  • 顺便说一句,这里的"不值得":`if(a.charAt(0)=='.')a = a.substr(1);`.所以是的,对于那些会阅读该主题的人来说"哦,没关系,我可以随处使用正则表达式",我在这里说"这里,它更慢,效率更低". (2认同)
  • @Esailija我倾向于同意Colin的观点 - 学习为感性和性能做事的最好方法不是微观优化; 它正在学习你的交易.黑客攻击代码并添加一堆不可读的乱码垃圾以节省10毫秒是微优化. (2认同)
  • @Esailija我的意思是10ms的页面,而不是脚本:P也,你怎么能说这里没有性能差异?在一个简单的正则表达式上可以看出......我无法想象复杂的正则表达式有多糟糕.http://jsperf.com/regex-vs-charat (2认同)

Col*_*ert 7

如果你不需要,不要做正则表达式.

一个简单的charAt()和一个substring()或一个substr()(只有charAt(0).)就足够了.


资源:

  • 这就是为什么你应该使用`charAt()`来检查是否有一个点.绝对不需要在那里使用正则表达式引擎. (2认同)
  • 值得注意的是,w3schools是一个给予任何人的可怕参考.http://w3fools.com/ (2认同)