2011-09-16 2 views
0

の正しい言葉と一致しない私は、だから私は、フォームを持っていると私は特定の単語を受け入れるようにしたいいけないここJavascriptがこれは別のポストにフォローアップで検証

を置きます。しかし、あなたが "ポスト"を入力すると私はそれを "pos"と一致させたいので、スクリプトはもはや部分全体の単語に一致するが、何らかの理由で "Positive"と入力すると "それは文字列でありますので、あなたはあなたのバックスラッシュ(\)をエスケープ倍にする必要がある正規表現

var resword = new Array("positive","pos","negative","neg","neutral", "neu","twitter","itunes","facebook","android","forums","RSS Feeds"); 

var valueLen = $("#aname").val().length; 
var fail=false; 

var filterElem = $('#aname'); 
var filterName = $('#aname').val(); 

      $.each(resword,function(){ 
        if (filterName.toLowerCase().match("\b"+this+"\b")) { 
          filterElem.css('border','2px solid red'); 
          window.alert("You can not include '" + this + "' in your Filter Name"); 
          fail = true; 
        } 
      }); 

答えて

0

私はすべての単語を取ること、これを実装するためにビットクリーンな方法をお勧めしますそれらを1つの正規表現に入れます。この方法には、すべての違法な単語を表示するアラートを1つだけ実行する機能強化もあります。これは、jsFiddleで作業しているコードです。

function check() { 
    var resword = new Array("positive","pos","negative","neg","neutral", "neu","twitter","itunes","facebook","android","forums","RSS Feeds"); 

    // build one regex with all the words in it 
    // assumes that the words themselves dont' have regex characgers in them 
    var regex = new RegExp("\\b" + resword.join("\\b|\\b") + "\\b", "ig"); 
    var filterElem = $('#aname'); 
    var match, plural, errors = []; 

    // call regex.exec until no more matches 
    while ((match = regex.exec(filterElem.val())) != null) { 
     errors.push(match[0]); // accumulate each illegal word match 
    } 
    // if there were any errors, put them together and prompt the user 
    if (errors.length > 0) { 
     plural = errors.length > 1 ? "s" : ""; 
     filterElem.css('border','2px solid red'); 
     alert("You can not include the word" + plural + " '" + errors.join("' and '") + "' in your Filter Name"); 
    } 
    return(errors.length == 0); // return true if no errors, false if errors 
} 
0

上の単語の境界:

.match("\\b"+this+"\\b") 
関連する問題