1

我正在尝试找到一种在 if 语句中使用通配符的方法。所以我有这样的值:07/22/2012(日期)然后我希望它这样做:

if (date = "07/" *) { alert("test"); };

它还必须只在 07 之后使用通配符,因为它可以在中间使用:06/07/2012

任何建议,谢谢西蒙。如果有人知道更简单的方法,我也可以使用 jquery。

4

4 回答 4

3

您可以使用该substring函数来检查字符串的特定部分:

if (date.substring(0, 3) === "07/") { alert("test"); };

也就是说,我同意您的用例可能存在更大的问题。如果您正在尝试验证日期,您真的应该使用日期函数而不是尝试验证字符串。

于 2012-11-13T15:11:03.550 回答
0

如果您需要将字符串与特定模式匹配,则应使用正则表达式

如果要测试字符串是否以某个子字符串开头,则可以使用 RegExp,例如:

/^07\//
  • /在开头和结尾分隔正则表达式文字
  • ^匹配字符串的开头,它会阻止模式在日期内匹配,例如'06/07/08'
  • 07匹配字符串'07'
  • \/匹配一个/字符,该\字符用作转义符,这样正则表达式就不会关闭,类似于字符串中的引号需要用\(ex "\"") 转义。

检查if语句的方法是使用以下test方法:

if (/^07\//.test(yourDate)) {
    ...do stuff...
}

这是模式匹配字符串的所有独角兽和彩虹,但是如果您经常使用日期,则应该将日期解析为Date对象并通过对象进行管理,而不是尝试执行复杂的模式匹配。

于 2012-11-13T15:15:46.850 回答
0

如果您尝试操作日期,我可以建议您使用像moment.js这样的库吗?

例如,要检查某个日期的月份是否为 7 月,请执行以下操作:

// month starts at 0 so July => 6
var month = 6;
var d = moment("07/22/2012", "MM-DD-YYYY");

if( d.month() === month ) alert("test");

这里的例子

于 2012-11-13T15:19:56.590 回答
0

使用substring / substr

if (date.substr(0, 3) == "07/")

检查字符串是否以该序列开头。在非常现代的 JS 引擎中,您也可以使用date.startsWith("07/")(也可以在填充时使用)。

对于更复杂的匹配,您可能需要使用正则表达式。“开始”看起来像这样:

/^07\//.test(date)
于 2012-11-13T15:12:19.630 回答