<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>
$("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 Aither 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]+$
确实有效。我最初在regexpal上尝试这个,它似乎没有用......
答案 0 :(得分: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]+$/);
答案 1 :(得分:0)
使用锚点按预期工作。你确定你在正确的地方有锚吗?
/^[0-9]{4}-[0-9]{2}-[0-9]{2}\s[A-Za-z]+$/