2016-10-28 6 views
0

次のように私はasp.netのテキストボックスコントロールのonkeypressでは/ onkeyupのイベントで正常に発射するJavaScript関数を持っている:正規表現は、Javascriptのコードでは正常に動作していない

<asp:TextBox ID="txtboxLatestTag" runat="server" onkeypress="validate()" onkeyup="validate()"></asp:TextBox> 

function validate() { 
    var str = $("#txtboxLatestTag").val(); 
    var pattern = /^\d{1,2}[.]\d{1,2}[.]\d{1,2}[.]\d{1,2}/gm 

    if (!str.match(pattern)) 
    { 
    document.getElementById("txtboxLatestTag").style.color = "red"; 
    } 
else 
{ 
    document.getElementById("txtboxLatestTag").style.color = "white"; 
} 

正規表現は、内のエントリに一致するようになっています形式: 10.10.10.10または 1.1.1.1 または各 "。"の間に1〜2桁の数字キャラクター。 これは問題ありませんが、それは 1.1.1.100と一致します。つまり、文字列の最後に3つの数字しか使用できません。 これは完全にregexr.comで動作しますが、なぜそれがわからないのですか?これでマッチングする。あなたが使用しているので、

は、あなたが

+0

あなたは間違って何かがありますか?私はjsfiddleを使ってあなたのコードを試してみました。それは '1.1.1.100'の場合でもうまくいきました。 –

+0

こんにちは私は1.1.1.100で動作したくありません。私は以下の答えに印を付けました。歓声 –

答えて

0

私はあなたが入力文字$の末尾に追加された文字列の末尾に余分な文字を除外(または行末文字に何をしたいと考えているありがとうマルチラインモード)。これにより、最後に余分な文字が表示され、一致が無効になります。たとえば:

var oldPattern = /^\d{1,2}[.]\d{1,2}[.]\d{1,2}[.]\d{1,2}/gm; 
 
console.log("Old pattern match:"); 
 
console.log("10.10.10.100".match(oldPattern)); 
 

 
var pattern = /^\d{1,2}[.]\d{1,2}[.]\d{1,2}[.]\d{1,2}$/gm; 
 
console.log("New pattern match:"); 
 
console.log("10.10.10.100".match(pattern)); 
 
console.log("10.10.10.1".match(pattern));

+1

Thanks heaps Steven、これで問題は解決しました –

関連する問題