在String结尾处使用通配符

时间:2012-11-13 15:07:59

标签: javascript jquery

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

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

它必须也只能在07之后使用通配符,因为它可以具有:06/07/2012

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

4 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

使用substring / substr

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

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

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

/^07\//.test(date)

答案 2 :(得分:0)

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

如果您想测试字符串以某个子字符串开头,您可以使用RegExp,例如:

/^07\//
  • /在开头和结尾分隔正则表达式文字
  • ^匹配字符串的开头,它可以防止模式在日期内匹配,例如'06/07/08'
  • 07匹配字符串'07'
  • \/匹配/字符,\字符用作转义符,因此正则表达式不会被关闭,类似于字符串中的引号需要如何已转发\(例如"\"")。

签入if语句的方法是使用test方法:

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

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

答案 3 :(得分: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");

示例here