2016-03-29 11 views
0

正規表現utf-8文字は使用できますが、アンダースコアのabdスペシャルのシャルタ(このものを除く)は制限されます。
アンダースコアを許可しています。制限したいです。 この私のデモコード: https://plnkr.co/edit/Solap6eBGssvn7wVjkFn?p=preview入力テキストボックスでアンダースコア( '_')の使用を制限します。

<!DOCTYPE html> 
<html> 

<head> 
    <link rel="stylesheet" href="style.css"> 
    <script src="script.js"></script> 
</head> 

<body> 
    <SCRIPT LANGUAGE="JavaScript"> 
    <!-- 
    function demoMatchClick() { 
     var re = new RegExp(document.demoMatch.regex.value); 
     if (document.demoMatch.subject.value.match(re)) { 
     alert("Successful match"); 
     } else { 
     alert("No match"); 
     } 
    } 
    </SCRIPT> 
    <P>regEx for unicode characters :</P> 
    <FORM ID="demoMatch" NAME="demoMatch" METHOD=POST ACTION="javascript:void(0)"> 
    <P>Regexp: 
     <INPUT TYPE=TEXT NAME="regex" VALUE="^([^\x00-\x7F]|[\w_\ \-])+$" SIZE=50> 
    </P> 
    <P>Subject string: 
     <INPUT TYPE=TEXT NAME="subject" VALUE="This is a test of the JavaScript RegExp object" SIZE=50> 
    </P> 
    <P> 
     <INPUT TYPE=SUBMIT VALUE="Test Match" ONCLICK="demoMatchClick()"> 
    </P> 
    </FORM> 
</body> 

</html> 
+0

それからちょうど[ '変更\ w_ \\ - ] '〜' [\ w \\ - ] '?正規表現パターンの文字セットの '_'が削除されます。 – Terry

+0

これは動作していません –

答えて

2

ドンを書いて停止します偽_リターンを書く検出します_のASCII文字でありますいくつかのjQueryを使用しないでください。入力時にキーが押されていることを確認し、マイナスシフトであればそれを防止します。

HTML

<input type="text" class="js-input"> 

JS

// get field 
var field = document.querySelector('.js-input'); 

// add keydown listener 
field.addEventListener('keydown', function(e) { 
    // 189 === minus 
    // with shift === _ 
    if (e.which === 189 && e.shiftKey === true) { 
    e.preventDefault(); 
    } 
}); 

デモ: https://jsfiddle.net/jrck9m2r/1/

編集: @Gauravの答えは動作しません:https://jsfiddle.net/Ley8mc19/2/

+0

あなたのソリューションは私の側で働いています。私はそれを私の既存のコードとどのように統合できますか? https://plnkr.co/edit/Solap6eBGssvn7wVjkFn?p=preview –

+0

これは何か? https://plnkr.co/edit/iGXNM63mNxqlphNBAWWc?p=preview – Pimmol

+0

jQueryを使用しないことを支持して投票しました。 – John

1

が使用するいくつかのjqueryの

$('input').on('input propertychange', function(event){ 
    if(event.which==95){ 
    return false; 
    } 
}) 

95は、このjqueryのは、あなたがそれを

+0

上記のコードをこのコードで編集できますかhttps://plnkr.co/edit/Solap6eBGssvn7wVjkFn?p=preview –

+1

jQueryでJavaScriptの質問に答えるために投票が遅れました。何かをシンプルにするために別の70KBをダンプするように要求することは、全く専門的ではありません。 – John

関連する問題