【JS正規表現】JavaScriptの正規表現で、ファイル名が正しいかどうかを判断したいです。

(ファイル名として適当でない記号が入っていたらfalseを得たいです)

ターゲットブラウザはIE5以上でお願いします。
よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/04/28 14:50:46
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:bonlife No.2

回答回数421ベストアンサー獲得回数75

ポイント70pt

以下のような感じでどうでしょうか。

str.match( /^.*[(\\|/|:|\*|?|\"|<|>|\|)].*$/ )

Windowsでファイル名に使えない\,/,:,*,?,",<,>,|がstrに含まれるとmatchがtrueを返します。

以下に簡単なサンプルも載せておきます。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>ファイル名チェックサンプル</title>
<script type="text/javascript">
function FileNameCheck() {
	var str = document.getElementById("str1").value;
//	alert(str);
	if( str.match( /^.*[(\\|/|:|\*|?|\"|<|>|\|)].*$/ ) ) {
		alert("正しいファイル名を指定してください。");
		return 1;
	} else if (str=="") {
		alert("ファイル名を入力してください。");
		return 1;
	}
	alert("ファイル名チェックO.K.です。");
	return 0;
}
</script>
</head>
<body>
	<form onSubmit="FileNameCheck()">
		<input id="str1">
	</form>
</body>
</html>

参考になれば幸いです。

その他の回答2件)

id:k-watching No.1

回答回数4ベストアンサー獲得回数0

正規表現じゃないですけど

function check(c){

var result = true;

for(i = 0;i<c.length; i++){</p>

switch(c.substring(i, i + 1)){

case ":":

case ";":

result = false;

}

}

return result;

}

これでチェックはできると思います。

(弾きたい文字をcase文に追加していく)

id:llusall

ごめんなさい。不可です。

質問にあるとおり、正規表現で実現させたいのです。

もっとピンポイントで言うと、パターンの指定がわからないのでぃす。

このパターンだけでも教えてくれる人がいるとうれしいです。

2006/04/28 14:04:16
id:bonlife No.2

回答回数421ベストアンサー獲得回数75ここでベストアンサー

ポイント70pt

以下のような感じでどうでしょうか。

str.match( /^.*[(\\|/|:|\*|?|\"|<|>|\|)].*$/ )

Windowsでファイル名に使えない\,/,:,*,?,",<,>,|がstrに含まれるとmatchがtrueを返します。

以下に簡単なサンプルも載せておきます。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>ファイル名チェックサンプル</title>
<script type="text/javascript">
function FileNameCheck() {
	var str = document.getElementById("str1").value;
//	alert(str);
	if( str.match( /^.*[(\\|/|:|\*|?|\"|<|>|\|)].*$/ ) ) {
		alert("正しいファイル名を指定してください。");
		return 1;
	} else if (str=="") {
		alert("ファイル名を入力してください。");
		return 1;
	}
	alert("ファイル名チェックO.K.です。");
	return 0;
}
</script>
</head>
<body>
	<form onSubmit="FileNameCheck()">
		<input id="str1">
	</form>
</body>
</html>

参考になれば幸いです。

id:k-watching No.3

回答回数4ベストアンサー獲得回数0

ポイント10pt

ではこれでは?

function check(c){

var result = c.match(/[^0-9A-Za-z.]+/) == null;

return result;

}

(実質2行目だけですけど)

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません