2016-04-27 21 views
0

入力の値に文字 'sn'とハイフンが含まれているかどうかを検出する必要があります(直ちに入力しないと入力はsn12345 - more textになります)ユーザーが「そうでない」や「していない」などの単語を入力しない限り正常に動作する関数を実行します。jQueryが文字列の前に他の文字があるかどうかを確認する

「sn」の前に文字があるかどうか、またその機能を実行するかどうかを検出できる方法はありますか?私はアポストロフィをチェックすることを検討しましたが、問題の入力を入力するときにはかなり怠惰で、使用しないユーザーもいます。

var lowercase_name = subject.toLowerCase(); 
var has_sn = lowercase_name.indexOf("sn") > -1; 
    if(has_sn === true){ 
     var has_hyphen = lowercase_name.indexOf("-") > -1; 
      if(has_hyphen === false){ 
       //alert user missing hyphen 
      }; 
       return false; 
      } 
    } 

私はまた、「SN」はスペースが付いている場合、それは失敗します入力(この例では、それ最も可能性の高い意志)の先頭で使用されているかどうかのチェックを検討しました。

var lowercase_name = subject.toLowerCase(); 
var has_sn = lowercase_name.indexOf("sn") > -1; 
    if(has_sn === true){ 
     var snIsNotPrecededByLetters = lowercase_name.match(/\bsn/g); 
     var has_hyphen = lowercase_name.indexOf("-") > -1; 
      if(has_hyphen === false){ 
       //alert user missing hyphen 
      }; 
       return false; 
      } 
    } 

ザ・:あなたがまたはSnとあなたのダッシュの間にスペースがあってもなくてもよいと言うと、あなたはSNが他の文字が先行する例と一致しないようにしたいので

+1

このようにして 'sn'と' -'を別々に調べることは明らかに意味がありません。なぜなら、今のところ、文字列に '-'_anywhere_が必要なだけなのでです。 'sn-'を探したいのであれば、なぜあなたは最初にindexOfにそれを使わないのですか? /これには正規表現が適しているかもしれません。 'sn 'の前に_word boundary_をチェックすることができます。また、行頭のアンカー'^'を使ってsn-at-the-start部分を簡単に組み込むことができます。 – CBroe

+0

snが存在する場合はハイフンを検索する必要がありますが、snの後のスペースとしてユーザーを指定することもあります。そのスクリプトは、人々がsnを持っている単語を使用する場合を除いて、うまく動作します。 – tatty27

+0

正規表現を使用すると、次のような便利なものが見つかる可能性があります。 http://stackoverflow.com/questions/641407/javascript-negative-lookbehind-equivalent –

答えて

1

は、次のような正規表現を使用することができますRegex Stringの "\ b"は、文字が前にない場合にのみ "sn"と一致します。

+0

ハイフンは無関係ですが、私はsnがsnの前に実際に別の単語の一部であることを示す文字があるかどうかを知りたいだけです – tatty27

+0

次にlowercase_name.match(/ \ bsn \ s */g); –

+0

私の機能にどのように適合するか教えていただけますか?私はまだ正規表現に慣れていない。 – tatty27

関連する問題