2012-01-02 11 views
2

テキストフィールドから値を取得しています。私は、入力された入力の最後に%などの特殊文字が表示されない場合、警告メッセージを表示したいと思います。JavaScript文字列の末尾に特殊文字があるかどうかを調べる

ユースケース:

  1. AB%のC - ショー警告
  2. % ABC-ショー警告
  3. % BC-ショー警告
  4. ABC% - OK

正規表現私はこれまでにこれが来た。

var txtVal = document.getElementById("sometextField").value; 

if (!/^[%]/.test(txtVal)) 
    alert("% only allowed at the end."); 

助けてください。 おかげ

+0

だから、うまくいきませんか? –

+0

'%'が文字列に存在しない場合はどうなりますか? @Sergio Tulentsev。 –

+0

文字列はそれを持っていない。ユーザが入力した値は%を含み、ユーザがabcde%fなどを入力することを意味します。 – Nomad

答えて

3

正規表現の必要はありません。 indexOfは文字の最初の出現を見つけますので、末尾にあることを確認してください:

if(str.indexOf('%') != str.length -1) { 
    // alert something 
} 
+0

あなたの答えをありがとう、それは働いているようです。 http://jsfiddle.net/pQzvd/ – Nomad

+0

"それは働いているようです"。あなたはそれがなぜ機能するのか理解していますか? –

+0

はい、あります。ありがとう。 – Nomad

2
if (/%(?!$)/.test(txtVal)) 
    alert("% only allowed at the end."); 

またはRegExpを使用していないことで、それをより読みやすくするために:

var pct = txtVal.indexOf('%'); 
if (0 <= pct && pct < txtVal.length - 1) { 
    alert("% only allowed at the end."); 
} 
+0

あなたの答えと助けてくれてありがとう、正規表現のものは仕事だが、2番目のものはそう思わない。 http://jsfiddle.net/ZHpDN/2/ – Nomad

+0

@Nomad、それは私の馬鹿だった。 2位を修正しました。 –

+0

更新いただきありがとうございます、本当にあなたの助けと時間をいただきありがとうございます。 – Nomad

2

これはまったくチェックする必要はありません。

var foo = "abcd%ef"; 
var lastchar = foo[foo.length - 1]; 
if (lastchar != '%') { 
    alert("hello"); 
} 

http://jsfiddle.net/cwu4S/

+0

あなたの答えはありがたいですが、あなたの答えはうまくいかないようです。 http://jsfiddle.net/4tzmR/1/ – Nomad

+0

この例では2つの構文エラーがありました。余分な閉じ括弧とセミコロンがありませんでした。 http://jsfiddle.net/4tzmR/3/ – mrtsherman

1

この作品は、でしょうか?

if (txtVal[txtVal.length-1]=='%') { 
    alert("It's there"); 
} 
else { 
    alert("It's not there"); 
} 
+0

あなたの答えをありがとう、それは動作するようです。 – Nomad

関連する問題