jquery/javascript中的语法正确吗?
在下面的jquery中,是否应该在中的“点”之前有一个结束语“)”: “jquery/javascript中的语法正确吗?,javascript,jquery,if-statement,Javascript,Jquery,If Statement,在下面的jquery中,是否应该在中的“点”之前有一个结束语“)”: “.test($…” (/^\s*$/.test($(this.val()) 如果不是,为什么不呢?我觉得代码有点奇怪。代码是正确的: /^\s*$/ // create a regex .test( // call the test method on it $(this) // create a jquery object .val() // call the val method on it
.test($
…”
(/^\s*$/.test($(this.val())
如果不是,为什么不呢?我觉得代码有点奇怪。代码是正确的:
/^\s*$/ // create a regex
.test( // call the test method on it
$(this) // create a jquery object
.val() // call the val method on it
)
但是,可以缓存该值:var val=$(this.val();
。
那么这一行可能就不会那么让你困惑了:
/yourregex/.test(val)
/^\s*$/
是一个正则表达式文本,它有一个被调用的测试方法。括号来自更大的if条件
由于javascript是完全面向对象的,所以即使是文字也可以有方法
/^\s*$/.test( $(this).val() )
第一部分是正则表达式,而不是字符串或其他任何东西。因此,它以delimiter/
和/
开头和结尾
使用.match
有时更清晰,因为它似乎没有一些奇怪的未绑定项在源代码中浮动:
$(this).val().match(/^\s*$/);
分解后的这个特定表达式如下所示:
/^ // Beginning of String
\s* // Space, zero or more times
$/ // End of String
因此,如果从头到尾有零个或更多的空格,则测试结果为阳性。代码很好。如果您认为它不可读,为什么不先创建正则表达式呢
var regex = /^\s*$/;
if(regex.test($(this).val())
...
/something/
是一个正则表达式。在Javascript中,它们是带有方法的对象,test
就是这样一种方法。代码没有任何问题。还有一种方法可以避免类似的混淆,那就是使用一些空格来正确设置代码格式,以使代码不加密。这里实际上不应该是一个paren开头-他从他的if()中复制
statement@JonathanSampson,+1这也有助于我理解。我在google@Chris22上找到了这个链接,Mozilla开发者网络总是很有帮助的。我还注意到你问过这个表达式是什么意思,所以我更新了我的答案以包含这个解释。我很确定你在使用new RegExp()时传递了一个字符串
。但是,除非必须这样做,否则不要这样做。使用字符串意味着您必须加倍转义反斜杠等。哦,对了。我已经有一段时间没有在JS中使用正则表达式了。谢谢您的帮助input@Ash,是的,如果它是这样编码的,我会更好地理解它。我不知道reg表达式可以有方法+1。如果我可以选择更多的方法有一个答案,我会的。谢谢你解释正则表达式是文本并且有方法。这真的很有帮助。它匹配一个空字符串或者只包含空格的字符串。
var regex = /^\s*$/;
if(regex.test($(this).val())
...