2016-07-14 3 views
0

私のユーザのユーザ名は、文字、数字、ピリオド、アンダースコアで構成します。しかし、私が下にあるのは、すべての文字を期間とアンダースコアでもブロックすることです。以下のコードで、文字、数字、ピリオド、アンダースコアをどのように有効にしますか?助けてください。ありがとうございました。あなたはまた、文字クラス\ wを使用することができますユーザ名にアンダースコア(_)とピリオド(。)を除くブロック特殊文字

function blockSpecialChar(e) { 
     var k = e.keyCode; 
     return ((k > 64 && k < 91) || (k > 96 && k < 123) || k == 8 || (k >= 48 && k <= 57)); 
    } 

答えて

0
/^[ [email protected]/#&+-]*$/ 

リンクは、あなたがこれを行うにはRegular Expressionを使用する必要が enter link description here

+0

(A)要件は「文字、数字、ピリオドおよびアンダースコア」です。(B)これは明らかにキーボードイベントハンドラであるOPの機能にどのように適合しますか? – nnnnnn

0

-Z0-9_座を交換します。

私は私のパターンから u can test your patterns Here

EDITキーコードを使用するための

わからない

var username = "something123._"; 
var patt = /([a-z][0-9][\.\_])*/i; /* this is the pattern u want to test */ 
var result = patt.test(username); /* result = true or false */ 

if(result == true){ 
    alert("your username is nice"); 
}else{ 
    alert("your username isn't good"); 
} 

$("input").bind("keypress",function(e){ 
    var patt = /([a-z][0-9][\.\_])*/i; /* this is the pattern u want to test */ 
    var value = this.value + String.fromCharCode(e.keyCode); 
    var result = patt.test(value); /* result = true or false */ 
    /* here you can do anything now */ 
}); 
+0

* "正規表現を使用する必要があります" * - 可能なさまざまな非正規表現の方法のいずれかを使用しない限り。これは、OPの既存のキーボードイベントハンドラにどのように適合しますか?いずれにしても、あなたの正規表現は、文字の後に数字の後ろに完全停止文字またはアンダースコア文字がある場合、その文字が出現する順序を制限したくはありません。 – nnnnnn

+0

@nnnnnn彼の関数のこの場合: 'function blockSpecialChar(e){ var k = e.keyCode; return patt.test(k); } ' – Saeid

0

はそれを試してみてください。

<html> 
 
    <head></head> 
 
    <body> 
 
     <input type="text" id="txt"> 
 
     <button onclick="fun()">Test</button> 
 
      <script> 
 
      var patt = /^[a-zA-Z0-9\.\_]*$/; 
 
       var ele = document.getElementById("txt"); 
 
       function fun() { 
 
        var value = ele.value; 
 
        if(patt.test(value)) 
 
         alert("Valid"); 
 
        else 
 
         alert("Invalid"); 
 
       } 
 
      </script> 
 
    </body> 
 
</html>

1

ここでは、正規表現に基づいて機能するための単純な置き換えです:

function blockSpecialChar(e) { 
    return /[^A-Za-z0-9._]/.test(e); 
} 

は、それが働いて参照してください:https://jsfiddle.net/utt3sf6p/

あなたの代わりに正規表現のキーコードを使用したい場合は、あなたが持っています正しいキーコード関数getCharAt()を使用して、ブール式を少し変更してください:

function blockSpecialChar(e) { 
    var k = e.charCodeAt(0); 
    return ((k > 64 && k < 91) || (k > 96 && k < 123) || (k >= 48 && k <= 57) || (k == 46) || (k == 95)); 
} 

は、それが働いて参照してください:https://jsfiddle.net/wfn37pu6/

注:例はeは、単一の文字が含まれていることを前提としています。 eが(onkeypressのような)キーボードイベントの場合は、を.test(e.key)e.charCodeAt(0)と置き換えて、e.key.charCodeAt(0)とする必要があります。

+0

これは、すべての文字を" {} [] // ;; "私は文字、数字、ピリオド、アンダースコアしか必要としません。その他私はブロックされたり無効になりたい。 – Louie

+0

おっとり。はい、私は 'return'ステートメントを忘れました。今は動作しています(JSFiddleのリンクを参照してください)。 – Torben

+0

私はそれを試しても同じです:( – Louie

関連する問題