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どちらかの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で試していましたが、うまくいかなかったようです...

4

2 に答える 2

0

アンカーを追加すると、部分一致を防ぐのに完全に機能するようです。最初の 3 つの入力の内容は一致しますが、最後の 3 つは一致しません。

$("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 に答える