C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[25]: パスワードの正規表現 [1]


(過去ログ 13 を表示中)

[トピック内 27 記事 (21 - 27 表示)]  << 0 | 1 >>

■3037 / inTopicNo.21)  Re[20]: パスワードの正規表現
  
□投稿者/ aoa (23回)-(2007/04/21(Sat) 10:45:50)
連投すいません。
パスワードのような短い文字列のチェックなら、
^(?=.*[a-zA-Z0-9])(?=.*[^a-zA-Z0-9])\S{7}$
とした方がわかりやすくていいかもしれません。

引用返信 編集キー/
■3051 / inTopicNo.22)  Re[21]: パスワードの正規表現
□投稿者/ ぼのぼの (38回)-(2007/04/22(Sun) 01:21:48)
No3022 (ASP.NET 初心者 さん) に返信
> 囚人さん
>
>>半角英数字と半角英数字以外の記号を1文字含んだ7文字以上
>>ってのが正しい仕様だったりしませんか?
>
> 仕様はおっしゃる通りです。

ちょww本当?

No3008
>>英数字と英数字1文字以外で7文字以上
>
> この表現がイマイチわかりづらいですが、整理するとこういうことでしょうか?
> (1)文字列長は7文字以上
> (2)最低1文字以上の英数字を含む
> (3)最低1文字以上の英数字以外を含む

No3011
> [ぼのぼのさん]
> 要件はおっしゃる通りです。

いや、これ…同じ意味か?同じ意味なのかもしれませんが、
私は囚人さんの表現は「記号は1文字しか含んじゃいけない」と解釈してしまいました。
日本語だけで仕様を表現するって(場合によっては)危険ですね。


No3037 (aoa さん) に返信
> 連投すいません。
> パスワードのような短い文字列のチェックなら、
> ^(?=.*[a-zA-Z0-9])(?=.*[^a-zA-Z0-9])\S{7}$
> とした方がわかりやすくていいかもしれません。

?=て表現、初めて知ったので興味が沸いて試してみたんですが、うまく動きませんでした。
もしやと思い、EnableClientScript="False"にしたら、うまく動きました。
どうやら、.NET Frameworkの正規表現ではサポートされているけどJavaScriptの正規表現では使えないっぽいです。
引用返信 編集キー/
■3067 / inTopicNo.23)  Re[22]: パスワードの正規表現
□投稿者/ aoa (26回)-(2007/04/22(Sun) 21:38:49)
No3051 (ぼのぼの さん) に返信

> どうやら、.NET Frameworkの正規表現ではサポートされているけどJavaScriptの正規表現では使えないっぽいです。


先読みはCore JavaScriptでサポートされているようです。
http://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Reference:Global_Objects:RegExp#.E6.AD.A3.E8.A6.8F.E8.A1.A8.E7.8F.BE.E3.81.A7.E3.81.AE.E7.89.B9.E6.AE.8A.E6.96.87.E5.AD.97

しかし、私も試しましたがダメですね。
if(/^(?=.*[a-zA-Z0-9])(?=.*[^a-zA-Z0-9])\S{7}$/.test("ab+defg")){
	alert("成功");
}else{
	alert("失敗");
}
私はJavaScriptは少しかじった程度ですが、書き方あってますでしょうか?

引用返信 編集キー/
■3068 / inTopicNo.24)  Re[23]: パスワードの正規表現
□投稿者/ aoa (27回)-(2007/04/22(Sun) 21:46:22)
2007/04/22(Sun) 22:06:23 編集(投稿者)

変更すいません。

JavaScriptで失敗しているのは先読みのところではなくて、
量指定子かもしれません。
{7}を+に変えると成功します。
引用返信 編集キー/
■3073 / inTopicNo.25)  Re[24]: パスワードの正規表現
□投稿者/ ASP.NET 初心者 (10回)-(2007/04/23(Mon) 00:20:52)
こんばんは。
色々、アドバイスありがとうございました。

> {7}を+に変えると成功します。
ということですが、そうなると、7文字以上という条件が外れてしまいませんか?

私も先読みについては詳しくないのですが、やはり一つの正規表現で、、、というと
この問題は難しいと思います。
引用返信 編集キー/
■3078 / inTopicNo.26)  Re[25]: パスワードの正規表現
□投稿者/ ぼのぼの (39回)-(2007/04/23(Mon) 11:55:18)
No3067 (aoa さん) に返信
> 私はJavaScriptは少しかじった程度ですが、書き方あってますでしょうか?

私がJavaScriptでわからないことがあったとき、よく参考にするのは、とほほのWWW入門です。
http://www.tohoho-web.com/js/regexp.htm

このサイトの情報によると、testメソッドはIE系では動かないかもです。
あと、量指定子の書き方は問題なさそうです。
ただし、7文字「以上」が要件なので、{7,}とした方が良さそうですね。
#これはASP.NET 初心者さんも■No3011で書いてますけど。

で、私の場合はmatchを使って試してみました。

    var s = document.getElementById("txt1").value;
    alert(s.match(/^(?=.*[a-zA-Z0-9])(?=.*[^a-zA-Z0-9])\S{7,}$/));

結果は、FireFoxだとちゃんと動きました。でもIE6だとダメでした(−−;
aoaさんの提示されたリンク先、よく見ると(いや、よく見なくてもw)mozillaのサイトですもんね。

引用返信 編集キー/
■3107 / inTopicNo.27)  Re[25]: パスワードの正規表現
□投稿者/ aoa (29回)-(2007/04/23(Mon) 18:46:16)
No3073 (ASP.NET 初心者 さん) に返信
> 私も先読みについては詳しくないのですが、やはり一つの正規表現で、、、というと
> この問題は難しいと思います。

正規表現でなら上にあげた例でできていると思います。
先読みはほとんどのツールでサポートされていますし、普通は動くはずです。
IEでは、先読み・量指定子を別々に使えば正常に動くのに、
一緒に使った場合ダメなようで、バグだと思います。
なので、正規表現を組み立てることが難しいのではないと思いますよ。
確かに正規表現でなくてもできることなので、
こだわる必要もありませんが。

No3078 (ぼのぼの さん) に返信

> 私がJavaScriptでわからないことがあったとき、よく参考にするのは、とほほのWWW入門です。
> http://www.tohoho-web.com/js/regexp.htm

お気に入りにいれました。ありがとうございました。




引用返信 編集キー/

<前の20件
トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -