0

我在 java 脚本函数中使用 if 条件,虽然我已经检查过并且 && 在 java 脚本中使用,但不知何故它不起作用。任何人都可以建议,这里可能有什么问题:

if(slugs[i].match("^{{") && slugs[i].match("}}$"))
{
    alert(slugs[i] + "YES!");
}

如果检查工作正常,则嵌套。

if(slugs[i].match("^{{"))
{
    if(slugs[i].match("}}$"))
    {
        alert(slugs[i] + "YES!");
    }
}
4

6 回答 6

2

简而言之:您应该使用类似的支票slugs[i].match(/^\{\{.*\}\}$/)

另一方面,这个演示表明一切都按预期工作。问题可能出在其他地方

var slugs = ['{{slug}}'];
var i = 0;
// your example #1
if(slugs[i].match("^\{\{") && slugs[i].match("\}\}$"))
{
    alert(slugs[i] + "YES!");
}
// your example #2
if(slugs[i].match("^\{\{"))
{
    if(slugs[i].match("\}\}$"))
    {
        alert(slugs[i] + "YES!");
    }
}

// corrected to use a single regex to accomplish the same thing
if(slugs[i].match(/^\{\{.*\}\}$/))
{
    alert(slugs[i] + "YES!");
}
于 2013-07-05T07:31:57.677 回答
1

如果目标只是确定是否存在匹配,那么您最好使用.test()而不是.match(). .match将返回一个数组,或者null, while.test()将返回一个布尔值。这需要不同的语法:

尝试这个:

if (/^{{/.test(slugs[i]) && /}}$/.test(slugs[i])) {
{
  alert(slugs[i] + "YES!");
}
于 2013-07-05T07:37:19.107 回答
1

There is no difference between the nested ifs and short-circuiting &&, your mistake must be elsewhere.

Anyway, I'd suggest using regex literals instead of the strings which are converted to regexes each time, and to call the boolean test method instead of making matches:

if (/^\{\{/.test(slugs[i]) && /\}\}$/.test(slugs[i]))
    alert(slugs[i]+" YES!");
于 2013-07-05T07:48:11.047 回答
1

matchnull如果找不到模式将返回,试试这个:

if (slugs[i].match("^{{") !== null && slugs[i].match("}}$") !== null)
{
    alert(slugs[i] + "YES!");
}
于 2013-07-05T07:34:29.440 回答
1

尽管引号在某些情况下有效,但您没有正确地制作正则表达式。

匹配() MDN

尝试这个

if(slugs[i].match(/^{{/) && slugs[i].match(/}}$/))
{
    alert(slugs[i] + "YES!");
}
于 2013-07-05T07:32:10.553 回答
0

您可以合并2个条件..

if(x = slugs[i].match(/^{{(.+)}}$/)){
  alert(x[1]+"YES!");
}
于 2013-07-05T07:41:05.727 回答