半角英数字のみであることを判断するには
[上に]
[前に]
[次に]
やま
[E-Mail]
1998/11/17(火) 01:07:52
半角英数字のみを許可する判断をさせたいのですが、現在
if(!($test =~ /[\da-zA-Z]+/)) {ダメ} else {OK}
としているのですが、$testに全角が入っているときでも
OKに処理が行ってしまいます。
詳しい方、解決方法をお願いいたします。
B-Cus
1998/11/17(火) 01:19:49
if( $test =~ /[^\da-zA-Z]/ ) {ダメ} else {OK}
や
if( $test !~ /^[\da-zA-Z]+$/ ) {ダメ} else {OK}
ではいかがでしょうか。
やま
[E-Mail]
1998/11/17(火) 01:52:43
すいません。ひとつ書き忘れていました。
$testは複数文字が入っています。たとえば、
ab12cd34ef ... OK
123愛45上xyz尾 ... NG
といった具合に判断したいです。
B-Cus
1998/11/17(火) 02:05:36
複数文字であっても上の方法でうまくいきませんか?
やま
[E-Mail]
1998/11/17(火) 02:18:24
[[解決]]
ありがとうございました。スピード解決です。
上記の方法でうまく行きました。
この手の正規表現、条件判断がもうひとつよくわからないのです。
どこか詳しい説明(でも易しい説明)は、ありませんでしょうか?
Tiot
[HomePage]
1998/11/17(火) 02:50:09
http://www.tohoho-web.com/wwwperl1.htm#Exprとか。
ちなみにif(!($test =~ /[\da-zA-Z]+/)) {ダメ} else {OK} は
まず、$test =~ /[\da-zA-Z]+/ >> 英数字がひとつでもあれば真。
それを!で、真偽を反転させるので、とにかく英数字が入っていれば良いということに
なってしまいます。
B-Cusさんのif( $test =~ /[^\da-zA-Z]/ ) {ダメ} else {OK} は、
は、[^\da-zA-Z]で英数字以外を検出して、入っていればダメというふうにしています。
よいものを探すというより、だめなものを探すという考え方です
(○○禁止という場合はこうすることが多いです)。
蛇足かとも思いましたが。
B-Cus
1998/11/17(火) 23:25:26
> どこか詳しい説明(でも易しい説明)は、ありませんでしょうか?
perl(特にperl5)は伝統的な正規表現以外にも、独自の正規表現を
ばんばん採用してるので、本を買った方がいいのではないでしょうか。
やはり定番はラクダ本ですかね?
Tiot
[HomePage]
1998/11/18(水) 00:28:55
王道はやはりラクダ本なのかな?
個人的には、(今手元にないのであいまいですが)、
技術評論社かどっかからでてる、白地に黄色と黒のデザインの
「パールハンドブック」とか、なんとかが割とわかりやすく
まとまっていたので良かったと思います。
この本は、それ以外の部分もよくできていて
パールの教科書としてはおすすめ。
ただCGIに関しては何もかいてありません。
[上に]
[前に]
[次に]