如何测试一个String是否包含“__X__”,如果是,则给出一个alert();

时间:2012-01-13 15:44:39

标签: jquery jquery-selectors

我正在使用动态页面input#first.val()是动态的。

我将获得的基本值是设备名称或设备分辨率。

假设input#first.val()是设备名称,如"iPad",那么我就不需要任何进一步的操作了。

但如果input#first.val()是设备分辨率,例如"1024 X 768",那么我想提醒用户。

那么如何检测input#first.val()是否为设备分辨率?

此外,设备分辨率将是动态的,因此它可能看起来像这些......

  • 1024 X 768
  • 480 X 640
  • 320 X 480

常见的事情是“ _ X _

那么如何在input#first.val()中检测到“ _ X _ ”并提醒用户?

可能使用:contains和字符串对象?

<input type="text" id="first" name="name" value=""/>

1 个答案:

答案 0 :(得分:4)

您可以使用正则表达式对其进行测试:

if ($("input#first").val().match(/\d+\s*X\s*\d+/i)) {
    // value contains ddd X ddd
}

作为解释,这个正则表达式是:

a series of one or more digits
followed by zero or more whitespace elements
followed by an "X" or "x"
followed by zero or more whitespace elements
followed by a series of one or more digits

如果您想要除分辨率编号以外没有其他内容,您可以使用:

if ($("input#first").val().match(/^\d+\s*X\s*\d+$/i)) {
    // value contains ddd X ddd
}

如果您想要求每个号码至少为3位数,您可以使用:

if ($("input#first").val().match(/^\d{3,}\s*X\s*\d{3,}$/i)) {
    // value contains ddd X ddd
}

另外,有没有理由使用“input#first”作为选择器而不仅仅是“#first”?较短的版本对于选择器引擎的工作较少,并且因为id必须在页面中是唯一的,它应该生成相同的结果,除非您以某种方式尝试过滤掉不在输入标记上的#first(这似乎不太可能)。