将String转换为方法参数,特别是在console.log中
Convert String into method arguments, specifically in console.log
我正在处理一个问题,我需要确保在我的代码库中,对console.log
的调用中是否存在特定的参数。简单地说,如果不存在,主要目标将是添加该论点。
在我最初的方法中,我提取了console.log(...)
的参数列表,并考虑以某种方式将其制作成任何数组(我不确定如何制作。我希望它足够可靠,比如大括号,逗号可以在字符串中作为函数的参数等(。
就是一个复杂的例子
console.log("this is a string,another()",'single ''quote''',param1, param['key'+some_variable]);
所以,任何帮助我前进的方法或建议。
注意:下面的代码和正则表达式模式非常适合用于解析单个console.log
行作为输入。当您需要解析整个代码时,您需要在JavaScript中检查JavaScript解析器。
您可以使用两步方法:使用replace
从开头删除console.log(
,从结尾删除);
,然后使用带有正则表达式的match
提取每个参数,这些参数可以是双引号或单引号字符串文字,也可以是内部没有逗号的纯变量。
您可以使用
var s = 'console.log(/s[''''''/]/g,a/b,`${`foobar, and more foobar`}`,"this is a string,another()",''single ''''quote'''''',param1, param[''key''+some_variable],`"''` and more`);';
console.log(s.replace(/^console'.log'(|');$/g,'').match(/'/(?:''.|[^'''/])+'/[gim]*|`'${`[^`'']*(?:''.[^''`]*)*`}`|(?:"[^"'']*(?:''.[^''"]*)*"|'[^''']*(?:''.[^''']*)*'|`[^`'']*(?:''.[^''`]*)*`|[^,])+/g));
解析console.log()
内部字符串的主要模式是
/'/(?:''.|[^'''/])+'/[gim]*|`'${`[^`'']*(?:''.[^''`]*)*`}`|(?:"[^"'']*(?:''.[^''"]*)*"|'[^''']*(?:''.[^''']*)*'|`[^`'']*(?:''.[^''`]*)*`|[^,])+/g
请参阅regex演示。
图案详细信息:
- 字符串起始处的
^console'.log'(
-console.log(
字符串 |
-或- 字符串末尾的
');$
-);
和
'/(?:''.|[^'''/])+'/[gim]*
-尝试匹配正则表达式文字(以/
开头的文字,然后可能有一个或多个非/
或'
+任何字符,并且在后面的/
之后可以有任何g
、i
或m
组合`'${`[^`'']*(?:''.[^''`]*)*`}`
-匹配特定的模板字符串语法(?:"[^"'']*(?:''.[^''"]*)*"|'[^''']*(?:''.[^''']*)*'|[^,'"]+)+
-1个或多个序列:"[^"'']*(?:''.[^''"]*)*"
-一个"
,后面跟有0+个除'
和"
之外的字符,后面跟0+个'
的序列,后面跟一个换行符,后面跟着0+个非'
和"
之外的字符(双引号文字模式(|'[^''']*(?:''.[^''']*)*'
-或与上面类似的模式,但带有单引号|`[^`'']*(?:''.[^''`]*)*`
-类似于上面的模板字符串文字模式|[^,'"]+
-或除,
、"
、'
之外的一个或多个字符
相关文章:
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- 从网站(特别是Trello.com)获取JSON文件
- 使javascript警报/确认对话框更加可见(特别是在Google Chrome浏览器中)
- 特别是将javascript添加到类中,而不是添加到另一个类中
- Piwik自定义插件开发/JQPlot(特别是:Piwik 1.7.1中的seriesPicker)
- 多文件上传,支持所有浏览器,特别是ie7,ie8和ie9
- 如何从浏览器中删除Skype呼叫工具?特别是Chrome
- 编译用于调试的私有api——特别是_enableRemoteInspector
- 如何模拟AngularJS中的构造函数(特别是Date()构造函数)
- 究竟如何getElementsByClassName工作在Chrome?,特别是w.r.t. NodeLists &;延
- 如何轻松运行本地内容(javascript, Flash),特别是在IE11中
- 如何抑制退格时,日期字段日历是活跃的extjs 4,特别是在IE中
- 在包含相对".js"后缀的npm包中使用aurelia-cli需要导入(特别是autobahn)
- Node.js有哪些调试选项?特别是在Visual Studio Code中
- HTML5视频显示时间在Javascript -特别是秒
- AJAX构建和部署环境,特别是javascript和css min,完整版本
- 如何从HTML表中提取数据,特别是<td id=“;单词“>,使用JavaScript
- 将String转换为方法参数,特别是在console.log中
- Vue.js:从DOM中拉入数据——特别是form action属性
- If/Else语句不能正常工作(特别是Else语句不能正常工作)