JavaScriptで文字列を後ろからx個とってくるには?
[上に]
[前に]
[次に]
のんち
2000/01/27(木) 20:54:51
sliceで負の数を指定して、後ろから数えるというやり方が
分かりません。
負の数って何を指定すればよいのですか?ご教授お願いします。
↓【例】入力が"html" or "htm" or "/" で終わっていないと入力をはじく
************** 失敗例 1 **********************************
var tar = document.menu.textbox.value;
var len = tar.length;
len *= -1;
if (tar.slice(len, 1) != "/" && tar.slice(len, 3) != "htm" && tar.slice(len, 4) != "html"){
window.alert("フルパスもしくはディレクトリで入力して下さい。");
return false;
}
************** 失敗例 2 **********************************
var tar = document.menu.textbox.value;
var len = tar.length;
if (tar.slice(-1, 1) != "/" && tar.slice(-1, 3) != "htm" && tar.slice(-1, 4) != "html"){
window.alert("フルパスもしくはディレクトリで入力して下さい。");
return false;
}
zizz...
[HomePage]
2000/01/27(木) 21:28:05
上のソースを直すのなら
if (tar.slice(len - 1) != "/" && tar.slice(len - 3) != "htm" && tar.slice(len -4) != "html") {
互換性を気にしないのなら、正規表現を用いたほうが書きやすく見やすい。
のんち
2000/01/27(木) 22:14:03
レスありがとうございます。
>互換性を気にしないのなら、正規表現を用いたほうが書きやすく見やすい。
私のやつは「正規表現」でないですよね??(^^;
例えば・・・どんな感じなんでしょう。
Mugi
[E-Mail]
[HomePage]
2000/01/27(木) 22:28:29
こうですね。
var tar = document.menu.textbox.value;
if(tar.match(/(html?|\/)$/)==null){alert("エラー")}
正規表現を使わない場合ももう少し簡単にできますよね。
例:
var tar = document.menu.textbox.value;
var tmp
var err=true
//↓最後の文字をチェック
tmp=tar.charAt(tar.length-1)
if(tmp=="/"){err=false}
//↓最後の3文字をチェック
tmp=tar.substring(tar.length-3,tar.length)
if(tmp=="htm"){err=false}
//↓最後の4文字をチェック
tmp=tar.substring(tar.length-4,tar.length)
if(tmp=="html"){err=false}
//↓3つのチェックをしてもエラーフラグがtrueのままならエラー
if(err){alert("エラー")}
のんち
2000/01/27(木) 22:53:06
Mugiさん、
>var tar = document.menu.textbox.value;
>if(tar.match(/(html?|\/)$/)==null){alert("エラー")}
これには感動です!
ありがとうございました。
まめまめやるのは・・・大変ですね。
のんち
2000/01/27(木) 22:53:36
[[解決]]
解決マークつけわすれました。
zizz...
[HomePage]
2000/01/28(金) 18:28:18
一応注意。
String.prototype.slice などは、JavaScriptの最初バージョンからあったのに対して、
String.prototype.match は、途中 (JavaScript 1.2) で追加されました。
だから、対応していないバージョンでは、実行するとエラーが発生します。
[上に]
[前に]
[次に]