正则表达式以将Javascript变量名与Dot匹配

时间:2018-10-30 15:44:14

标签: javascript regex performance for-loop

我最近了解到,通过将length / count移到循环外可以大大提高for循环的性能,并认为我会考虑在整个站点中实现这一点。

使用for\(.*<.*\.length进行完整的正则表达式搜索显示,在搜索的12,000个文件中的70个中,我有大约600个匹配项,而当我浏览时,我意识到我只是一遍又一遍地剪切粘贴,几乎没有变化我只是复制计算长度的原始代码,删除点并大写第一个字符。

例如:for(c=a.children.length-1;0<=c;c--)d将成为

var AChildrenLength=a.children.length;
for(c=AChildrenLength-1;0<=c;c--)d

一旦我意识到自己的工作是单调的,似乎该花些时间了,可以将正则表达式变成一个可以修改正则或缩小文件的shell脚本。

看上去很简单,可以上手,但后来我遇到了一些用点分隔的比赛的麻烦。以下是一些我很难匹配的示例:

for($j = 0; $j < incomingData.customer['data'].length; $j++){

for(c=a.children.length-1;0<=c;c--)d

for(l=0;l<g.length;l++){d=g[l]

// this is a fun one to look at, I didn't know you could do a for loop like that.
for(h in b)if(!h.match(d||/margin|text\-align|width|border|padding/i))if(g)g=!1;else{var l=new CKEDITOR.htmlParser.element("span");l.attributes.style=h+":"+b[h];c.add(l);c=l;delete b[h]}CKEDITOR.tools.isEmpty(b)?delete a.attributes.style:a.attributes.style=CKEDITOR.tools.writeCssText(b);for(b=0;b<e.length;b++)c.add(e[b])},sortStyles:function(a){for(var b=["border","border-bottom","font-size","background"],c=m.parseCssText(a.attributes.style),d=m.objectKeys(c),e=[],g=[],h=0;h<d.length;h++)

for(var f=0,n=0,l=0,p,e=a.$.rows.length;l<e;l++)

for(var i = 0; i < this.audioLayerControl.listOfSequenceEditors.length; ++i)

我正在使用以下正则表达式:(?:for\(.*<\W?)(([\w]+)\.?)+(?:\[?)|(?:\.length)

您可以在此处查看匹配的颜色代码:https://regex101.com/r/GsPieq/2

由于某种原因,它仅与每个单词的最后一个单词匹配。有人可以帮助我了解为什么它不起作用吗?我需要它匹配1到5个单词,并用点分隔,不包括.length{"data"]之类的括号中的任何内容,然后我可以循环遍历每个匹配项,将第一个字符转换为大写。

它不应该与已经正确组成的任何内容(例如for(c=AChildrenLength-1;0<=c;c--)d

)匹配

这是我的思考过程:

(?:for\(.*<\W?) // Non capture but match any for loop up to the test
(
   ([\w]+)\.? // capture any alphanumeric char up to a dot if it exists
)+ // repeat if possible
(?:\[?)|(?:\.length)  // non capture find where it ends

0 个答案:

没有答案