0

在行动中看到它!

HTML:

<input type='text' value="2012-12-30 Morning">
<input type='text' value="2012-12-30 Lunch">
<input type='text' value="2012-12-30 Dinner">
<input type='text' value="2012-12-30 Either akgalkgalkgla">
<input type='text' value="2012-12-30">
<input type='text' value="Morning">
<button>Check</button>

Javascript/jQuery:

$("button").click(function() {
    $("input")
        .filter(function() {
            return this.value.match(/[0-9]{4}-[0-9]{2}-[0-9]{2}\s[A-Za-z]+/);
        })
        .css("border", '1px solid red');

})​

我尝试使用锚点^$但它不再匹配了。在上面的例子中,它不应该匹配“2012-12-30 Either akgalkgalkgla”

这是正则表达式 [0-9]{4}-[0-9]{2}-[0-9]{2}\s[A-Za-z]+

2012-12-30 Morning
2012-12-30 Lunch
2012-12-30 Dinner
2012-12-30 Either akgalkgalkgla

更新:

工作也是如此^[0-9]{4}-[0-9]{2}-[0-9]{2}\s[A-Za-z]+$。我最初是在正则表达式上尝试这个,它似乎没有工作......

4

2 回答 2

0

添加锚似乎可以完美地防止部分匹配。前三个输入的内容匹配,后三个不匹配:

$("button").click(function() {
    $("input")
        .filter(function() {
            return this.value.match(/^[0-9]{4}-[0-9]{2}-[0-9]{2}\s[A-Za-z]+$/);
        })
        .css("border", '1px solid red');
});

这是在行动:http: //jsfiddle.net/ZZYMG/4/

如果要将边框应用于所有未通过此测试的元素只需反转您在过滤器回调中返回的布尔值:

return !this.value.match(/^[0-9]{4}-[0-9]{2}-[0-9]{2}\s[A-Za-z]+$/);
于 2012-12-15T23:10:53.567 回答
0

使用锚点按预期工作。你确定你把锚放在了正确的地方吗?

/^[0-9]{4}-[0-9]{2}-[0-9]{2}\s[A-Za-z]+$/
于 2012-12-15T23:11:07.760 回答