jQuery正则表达式搜索 - 存储所有变量名称

时间:2017-02-11 22:13:06

标签: javascript jquery regex

我正在更新ECMAScript 5的jQuery语法高亮脚本,并为JavaScript语法高亮添加了改进。我想搜索我的code .html();变量,并将所有变量名称存储在新变量varNames下。

变量命名示例:

示例1)。

var a = this;
var b = that;

将“a”和“b”添加到变量名称列表

示例2)。

var a = this,
    b = that;

将“a”和“b”添加到变量名称列表

更新:示例3

parseXSL: r => F.parseXML(r).then(F.xsl),
xsl: x => {},
xslTransform: f => {},

将“r”“x”和“f”添加到变量名称列表中。

  

更新2:看来上面的“示例3”略有不同,您可以拥有以下内容:

blob: r => r.blob(),
arrayBuffer: r => r.arrayBuffer(),
blobType: type=> r=> F.arrayBuffer(r).then(a=>new Blob([a],{type:type})),
url: blob =>
     

然而,我会在之后的任何地方给'blob'变量突出显示   url:而不是之前'blob'不会突出显示   r.blob(),

     

如果这是另一个球场,请告诉我,我会将其删除   从这里开始,玩弄任何答案,看看我是否能得到这个   也工作,如果没有发布另一个问题!

  

更新3:看来我上面说的与所有变量名一致!它们只应突出显示after它们已被定义为变量名称!

     

任何变量名称和“THIS”(“示例:这个”)都应该有意地包含在<spanvar></spanvar>中,以便稍后在我的脚本中替换为<span class="var"></span>,否则会出现一些错误。

搜索变量名称:

对于示例1)。,要获取的变量名称要容易得多,/(var )([a-zA-Z0-9 _]+)/可以使用,但是我没有使用正则表达式,变量值可能是任何包含多个逗号的内容,所以我不确定如何找到示例2。

问题:

  1. 如何搜索包含code的{​​{1}}变量并存储所有变量名称?
  2.   

    更新3:问题

         
        
    1. 如何找到所有想要的名字      
          
      • 找到一个:      
            
        1. 如何在发现点后包装所有出现的单词?
        2.   
      •   
    2.   

1 个答案:

答案 0 :(得分:2)

我不确定我是否理解正确,但我根据你的问题做了以下假设:

  • 您正试图在示例文本中查找实际上是JavaScript的所有变量。
  • 匹配需要查找以逗号分隔的变量。

如果这是您所需要的,这里是JavaScript中的代码片段,它返回一个变量列表:

&#13;
&#13;
// extract the variables
var regex = /(?:var|const|let)\s+((?:[^,=]+,)*[^,=]+?)\s*=/g;
var text = document.getElementById('main').innerHTML;

var variables = {};
var match = regex.exec(text);
while(match !== null) {
  var variableArraySplitByComma = match[1].split(',');
  for(var i=0; i<variableArraySplitByComma.length; i++) {
    variables[variableArraySplitByComma[i]] = true;
  }
  var match = regex.exec(text);
}

// values is an object to keep the values unique
var uniqueVariables = Object.keys(variables);
console.log(uniqueVariables);
&#13;
#main {
  white-space: pre;
  font-family: monospace;
}
&#13;
<div id="main">
  var test= 123;
  const hello = "this is a test.";
  let test2,variable  ={'variable':1};
  hello.html();
  test2.html();
</div>
&#13;
&#13;
&#13;