读懂一个ajax表达式

function extractArgs(fn) { //angular 这里还加了注释、箭头函数的处理
            var args = fn.toString().match(/^[^\(]*\(\s*([^\)]*)\)/m);
            return args[1].split(',');
        }
正则表达式:
/^[^\(]*\(\s*([^\)]*)\)/m

目的是匹配函数fn括号中的参数,表达式分析:

1.[^\(]* 表达式的意思是不包含(是其他字符,零到任意多个。解释:[ ]里的内容是一个表达式,后边的*是限制符。正则一般都是这种形式,表达式后边跟一个限制符。表达式在上面例子中的意思是匹配函数 function xxx (‘(‘ 之前的字符)这一串字符的。

2.\( 匹配 '('


3.\s* 匹配零到多个空格


4.([^\)]*) 匹配不包含‘)’的零到多个任意字符,同时这也是一个捕获组


5.\) 匹配‘)’

翻译为语言:匹配字符串中不包含‘(’ 的任意字符,后边跟一个左括号‘(’,左括号可以有零到多个空格,括号里内容是零到任意多个不包含右括号‘)’的字符,最后跟一个右括号。最终会返回一个长度为2的数组(可以看下例)


匹配项方法一:

从母字符串的开头开始匹配

<html>
<body>
<script type="text/javascript">
var str="function test(ysx,xjh){alert(123);}"
var args = str.match(/^[^\(]*\(\s*([^\)]*)\)/m);
document.write(args);
</script>
</body>
</html>


可以查看数组项:



方法二、

直接从需要的地方匹配字符串,直接从‘(’ 开始的

<html>
<body>
<script type="text/javascript">
var str="function test(ysx,xjh){alert(123);}"
var args = str.match(/\(\s*([^\)]*)\)/m);
document.write(args);
</script>

</body>
</html>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值