2016-04-12 12 views
-3

マッチャーvar matcher = 'NNN#DDD'があります。このNは文字(a-zまたはA-Z)を表し、Dは数字(0-9)を表します。フォーム入力値とカスタムマッチシーケンスの一致方法

上記のmatcherとjavascript/jQueryのユーザー入力を一致させる方法はありますか?例えば

var user_input = 'abc#123' # matched 
var user_input = 'ab1#123' # non matched 

注:マッチャは、ユーザの入力になりますから、マッチャはたぶん、あなたはMasked Input Pluginをマスクしたい正規表現

+0

正規表現は、私は正規表現とすべてを知っているスナップ –

+0

でこれを行うだろう。それは何か挑戦している – geekdev

+0

正規表現を知っているなら、なぜそれを使用しないのですか?あなたのシーケンスは簡単です: '/([a-zA-Z]){4}#([/ d]){3}' –

答えて

3

UPDATE:質問が明らかになった後、それはマッチャが、ユーザによって入力する必要が判明。あなたが実際に正規表現を必要としたくないのであれば(おそらくもっと簡単にしたいと思うかもしれませんが)、マッチャーのような独自のフォーマットルールを定義することをお勧めします。次に、入力した文字列を内部使用のために正規表現に変換する必要があります。

たとえば、ユーザーが文字、数字、または特定の特殊文字を許可できる場合は、「あなたの例を使用して」次のように定義できます。「各文字を表すNを入力し、各数字を表すDと、次のセットから:(%#)。 "

ユーザが「NN#DDD%ND」と入力した場合、その文字列を正規表現に変換します。

var userMatcher = 'NN#DDD%ND'; 
 
var matcherRegex = ''; 
 

 
var matcherMap = { 
 
    'N': '[a-zA-Z]', 
 
    'D': '[0-9]', 
 
    '#': '#', 
 
    '%': '%' 
 
}; 
 

 
var regexValue; 
 
for(var i in userMatcher) { 
 
    regexValue = matcherMap[userMatcher[i]]; 
 
    
 
    if(regexValue === undefined) { 
 
    throw new Error('Invalid matcher!'); 
 
    } 
 
    
 
    matcherRegex += regexValue; 
 
} 
 

 
matcherRegex = new RegExp(matcherRegex); 
 

 
var testInput = ['ab#123%H2', 'a1#123%H2']; 
 

 
for (var i = 0; i < testInput.length; i++) { 
 
    if (testInput[i].match(matcherRegex)) { 
 
    console.log(testInput[i] + ' matches!'); 
 
    } else { 
 
    console.log(testInput[i] + ' doesn\'t match...'); 
 
    } 
 
}

+0

あなたの答えをありがとう – geekdev

2

ように変更することはできませんか?

<input type="text" id="masked" /> 

とちょうどプラグインを起動します。

$("#masked").mask("aaa#999"); 

Plunker:https://plnkr.co/edit/KegvIln8P7qa80BPRwW7

+0

お返事ありがとうございました – geekdev

+0

ようこそ! –

関連する問題