入力の値に文字 '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が他の文字が先行する例と一致しないようにしたいので
このようにして 'sn'と' -'を別々に調べることは明らかに意味がありません。なぜなら、今のところ、文字列に '-'_anywhere_が必要なだけなのでです。 'sn-'を探したいのであれば、なぜあなたは最初にindexOfにそれを使わないのですか? /これには正規表現が適しているかもしれません。 'sn 'の前に_word boundary_をチェックすることができます。また、行頭のアンカー'^'を使ってsn-at-the-start部分を簡単に組み込むことができます。 – CBroe
snが存在する場合はハイフンを検索する必要がありますが、snの後のスペースとしてユーザーを指定することもあります。そのスクリプトは、人々がsnを持っている単語を使用する場合を除いて、うまく動作します。 – tatty27
正規表現を使用すると、次のような便利なものが見つかる可能性があります。 http://stackoverflow.com/questions/641407/javascript-negative-lookbehind-equivalent –