トップページ⇒php
1001コメント313KB

正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/11/19 21:42ID:Kst3Nn4S
Perlに限らずスクリプト系言語で大活躍の正規表現。
このスレは有用そうな正規表現を紹介したり、どう表現したらいいかわからないときに質問をしたりするためのスレッドです。
質問するときは使用言語や得たい結果をなるべく詳しく書きましょう。

註:& や " を書くときには、&amp " と描いておきましょうね。

Perlメモ
 http://www.din.or.jp/~ohzaki/perl.htm
正規表現メモ
 http://www.kt.rim.or.jp/~kbk/regex/regex.html
Regex::Diagram.pm
 http://www.cc.rim.or.jp/~midorin/mad-p/RegexDiagram.html
正規表現
 http://www.cc.rim.or.jp/~midorin/mad-p/perl/benkyou/PRC2kRegex/
UNIX正規表現入門 目次
 http://www01.u-page.so-net.ne.jp/jc4/hiroyuki/rex_index.html
Regular Expression(Riue ちゃんの正規表現講座) - Index
 http://www.sixnine.net/regexp/

ほとんどは↓のリンク集にまとまっています。
正規表現最新リンク集2002
 http://www2.famille.ne.jp/~akio1998/l_grep.html

過去スレ
正規表現道場@2ch
 http://pc.2ch.net/test/read.cgi/php/996105815/
正規表現道場@2ch Part2
 http://pc2.2ch.net/test/read.cgi/php/1038146241/
0145nobodyさん04/01/15 17:32ID:???
>>143
意味不明
0146nobodyさん04/01/15 19:03ID:???
>>143
preg_match('(正規表現|ない|or|しょう)', $text);
0147nobodyさん04/01/15 19:56ID:???
>>143
そのコードのままでは意図通りに動いてないの?
0148nobodyさん04/01/15 21:38ID:Z1eTG8w5
210.153.84.0/24 とか 210.134.83.32/27 とかの表記での
アクセス制限はPerlではできないかと思いますが、
これらを正規表現にてなんとか綺麗にかけないもの
でしょうか。

もしも良い案がございましたらご教授ください。
0149未承諾広告※ ◆aiY4htt2.2 04/01/15 21:42ID:???
>>148
&
0150nobodyさん04/01/15 21:44ID:???
>>148
サブネットマスクで表すアドレス範囲がわかれば簡単なことだろ
0151nobodyさん04/01/16 04:47ID:???
>>149
たった一文字なのに的確なマジレスだな
0152nobodyさん04/01/16 17:53ID:???
空行の上の1行にマッチするということは、正規表現でできますか?

あいうえお\r\n
かきくけこ\r\n
\r\n
さしすせそ\r\n
たちつてと\r\n
naninuneno\r\n
\r\n
歯皮膚へ補\r\n
\r\n

かきくけこ\r\n、naninuneno\r\n、歯皮膚へ補\r\nにマッチして欲しいんですが・・・。
0153nobodyさん04/01/16 20:31ID:???
>>152
([^\n]+\n)\r\n
\1とか$1で参照で出来ると思う。
0154nobodyさん04/01/16 20:49ID:???
こんなんは動きませんか。perl。
(?:\n?)[^\r\n]+\r\n(?=\r\n)
0155未承諾広告※ ◆aiY4htt2.2 04/01/16 22:03ID:???
\b(.+?)\r\n\r\n
手抜きかも。。。
0156nobodyさん04/01/16 22:45ID:???
/(.+?¥x0D?¥x0A)¥x0D?¥x0A/gs
015715204/01/17 00:12ID:???
>>153-156
皆様、レスありがとうございます。

空行の上の行を取得できました。
勉強不足でした、精進します。
ありがとうございました。
0158nobodyさん04/01/18 20:18ID:???
PHPで、
「(文字列 ほげ か、文字列 ふが)が先頭にある文字列以外にマッチする」という正規表現はどのようにすれば記述できるでしょうか?
/(([^ほ][^げ])|([^ふ][^が])).*/
かと思ったのですが、違うようです……
0159nobodyさん04/01/19 00:42ID:???
>>158
逆に、「〜にマッチしなかったら」という処理にした方が楽。
0160nobodyさん04/01/19 14:48ID:UUNY3/Bm
perlですが、
$domainにドメインが入っていて、(仮にyahoo.co.jp)
$hogeに入力されたURLが入っているときに
$hogeがルートディレクトリから2つ以上掘り下げた場所にあるファイルのURLなら、ある処理をする
ということをしたいのですが、頭の中ではまとまっていてもどのようにすればいいのかが・・。
ちょっと解りにくいと思うので、具体的に$hogeが何ならokで何ならNGかを↓
○ http://yahoo.co.jp/
○ http://yahoo.co.jp/xxx
○ http://yahoo.co.jp/xxx/
○ http://yahoo.co.jp/xxx/top.html
× http://yahoo.co.jp/xxx/yyy/
× http://yahoo.co.jp/xxx/yyy/zzz/...../foo.html
・
・
こんな感じです。
ネックとしてはディレクトリの時「/」をつけてる場合とそうでない場合がある。
index.htmlなどを書く場合とそうでない場合がある。
というところでしょうか。

で、マッチした場合に処理するという形で考えてるんですが、
if ($hoge =~ /^https?:\/\/\Q$domain\E\/([^\/]+)\/※/) { 処理 }
※の部分にスラッシュがあるか、なくてもドットがなければマッチ
という風にすればいけるのかな?などと考えているのですが、
どのように書けばよいのかが解りません。また本当にそれで実現できるのかも「?」です。
わかりにくい質問だとは思いますが、教えていただけませんでしょうか。
0161nobodyさん04/01/19 15:22ID:???
>>160
厳密なこと言うと /xxx/yyy がディレクトリかファイルかは、
実際にその URL にアクセスしてみないとわからないので、
どっかで妥協しないといけないと思う。

で、 >>160 のような前提でマッチするとするなら、こんな感じかな。
$hoge =~ /^https?:\/\/$domain\/([^\/]+)\/([^\/]+\/|[^\/\.]+$)/
0162nobodyさん04/01/19 15:33ID:???
>>161
有難うございます。確かに厳密にはそうですが、まぁここではそこまで突っ込まないことにします。
で、少し書いていただいたソースでテストしてみましたが、おそらく期待通りのようです。
後でまたテストしてみます。有難うございました。
016315804/01/20 00:19ID:???
>>159
プログラム自体が「設定ファイルに記述した正規表現(のリスト)にマッチしたら」っていう処理なんで、
>逆に、「〜にマッチしなかったら」という処理にした方が楽。
とは分かってるんですが、何とかならない物かと。

……あや、PHPでも '?!' は使えるのか。ってことは、
/^(?!ほげ).*/
で、「文字列 ほげ が先頭にある文字列以外にマッチ」になるのか?
としても、
/^((?!ほげ)|(?!ふが)).*/
じゃないよなぁ……。
0164nobodyさん04/01/20 03:08ID:???
boolを反転させればいいだけ。正規表現使う必要も無し。
0165nobodyさん04/01/20 03:48ID:???
>>163
何の設定ファイルか興味津々。
0166nobodyさん04/01/20 04:05ID:???
>>163
アホですか?
0167nobodyさん04/01/20 08:28ID:???
アホって言うか、いわゆる初心者ってやつです。おまけに自分で調べない、人に聞くことしか出来ないときてますから手に負えません。
0168nobodyさん04/01/20 17:57ID:???
みたこと無い人はPHP質問スレをちらっと訪れてみることをお勧めします。
長期滞在は精神衛生上よろしくありませんので、あくまでピーピングってください。
016915804/01/21 03:02ID:???
>>164-166
申し訳ないです。数時間色々試して、「正規表現でそういうのは無理」
と思いつつもつい、知ってる人がいれば良いな程度に書き込んでしまいました。
(「無理」って思ったんなら諦めろよ、俺。)

処理の方いじってみる事にします。(とりあえず、当面質問スレには出向かない方向で。)
ありがとうございました。
0170nobodyさん04/01/21 06:51ID:???
(「無理」って思ったんなら諦めろよ、俺。)

気持ち悪いです。
0171nobodyさん04/01/21 07:45ID:???
気持ちいいです。
0172nobodyさん04/01/21 15:39ID:???
>>169
preg_match('/(?:(?!^(foo|bar)).)*/', $str, $arr); if ($arr[0]) do;

これが正規表現でやることか?
つーか>>1のサイトくらい見ろよハゲ
0173nobodyさん04/01/25 15:45ID:???
perlを使っています。
<a href="#epigraph">▲</a> <a href="#D_20040124">▼</a>
を、
<a href="#D_20040124">▲</a> <a href="#epigraph">▼</a>
と、属性値だけ入れ替えるにはどうしたらよいのでしょうか?(属性値は可変です)

正規表現は苦手で、いくら考えても判らなかったので……。
0174nobodyさん04/01/25 16:16ID:???
/(<a href="\#)([^"]+?)(">▲<\/a> <a href="\#)([^"]+?)(">▼<\/a>)/$1$4$3$2$5/gi

こういうことなんかな? 意図がわからんからめちゃくちゃ適当なんだが。
0175nobodyさん04/01/25 16:27ID:???
>>174
できました! そっか、こういう風にすれば良かったのか……。
今度からは自分でできるように、正規表現についてしっかり勉強しようと思います。
ありがとうございました。
0176nobodyさん04/02/03 02:35ID:dCMf0k2c
ホッシュ
0177nobodyさん04/02/09 22:07ID:9171cO3S
IPアドレスの正規表現で
a.b.c.d/8
とか
a.b.c.d/32
ってどういう意味なんでしょうか?
誰か教えてください…
0178nobodyさん04/02/09 22:12ID:???
>>177
正規表現じゃなくてサブネットマスクだろ
ぐぐれ
0179nobodyさん04/02/10 18:53ID:???
めっちゃ簡素な質問で申し訳ないのだが、
PerlでHTMLタグを取り除く処理を行う場合、

s/<.*?>//g;
と書いている場合と、
s/<[^>]*>//g;
と書いている場合がありますよね?
大抵のところで「<.*?>は遅い」とかかれているのですが、
実際どれくらい処理効率が違うのでしょうか
0180nobodyさん04/02/10 18:56ID:???
すみません、すごく初歩的な質問なんですけど、
いくつか並んだ単語の中の、真ん中の単語だけを検索するには
どういう正規表現を使ったら良いのでしょうか?

<item name="アニメA.Aスレッド 13th session " category="AA" board="AAサロン"
<item name="アニメA.Aスレッド 12th session " category="AA" board="AAサロン"
<item name="アニメA.Aスレッド 11th session " category="AA" board="AAサロン"

と並んでいるもののうち、【アニメA.Aスレッド xxth session】だけを検索したいのですが可能でしょうか?

いろいろ検索しつつ試行錯誤をしていますが、どうしても分かりません。
どなたかいらっしゃいましたら、教えて頂けないでしょうか?
0181nobodyさん04/02/10 20:26ID:???
>>179
自分でベンチマークしてみる

>>180
21st 22nd 23rd ってことになるかな?
0182nobodyさん04/02/11 05:51ID:???
/アニメA.Aスレッド [0-9]{2}th session/
0183nobodyさん04/02/11 21:58ID:???
coffeeとかballoonみたいに、
3・4文字目が同じ、5・6文字目が同じような単語をマッチさせる正規表現を教えていただけませんか?

○×△△□□ みたいな形式。1・2文字目はなんでもOK。7文字目以降に何がきてもOK。

sedでおねがいします。
0184nobodyさん04/02/11 22:18ID:???
/..(.)\1(.)\2/
0185nobodyさん04/02/11 22:24ID:???
それtってPerlじゃないんですか・・・?
0186nobodyさん04/02/11 22:33ID:???
/..\(.\)\1\(.\)\2/
0187nobodyさん04/02/12 01:00ID:???
>>185
あんたは何処の誰
0188nobodyさん04/02/12 01:23ID:???
サンタはホモのひげ
0189nobodyさん04/02/12 01:38ID:???
/^(..(.)\2|...(.)\3)/

こうか?
0190nobodyさん04/02/12 02:26ID:???
coffee
tattoo
balloon
saccees

あたりがひっかかればいいのか?
019118904/02/12 02:40ID:???
すまん、質問文全体的に読み間違えてた。。。

/^..\(.\)\1\(.\)\2/

でいいんじゃない?
0192nobodyさん04/02/12 02:44ID:???
ありがとうございます。
Perlで\1とかが使えるのは知ってたのですが、sedでもつかえるとは思って無かったです。

ぶしつけがましいかもしれませんが、Perlで!~と表される「マッチ以外」を
sedで実装するにはどうすればいいのでしょうか。

実は今回初めてsedというものに触れることになったもので・・・
Perlみたく正規表現が使える、というのは知ってたのですが仕様が違うらしくうまくいかなくて・・・
0193nobodyさん04/02/12 02:57ID:???
>>192
>>1 の正規表現メモを見れ。
0194nobodyさん04/02/12 16:51ID:???
>>192
!

マニュアルは死んでも見ない主義か?
0195nobodyさん04/02/12 23:51ID:???
PHPで2chのスレッドURLの正規表現(ereg)は
http://(.)+\.2ch\.net/test/read\.cgi/(.)+/[0-9]{10}/
これでいいですか?
もうちょっとスマートなのあればお願いします。
0196nobodyさん04/02/13 04:16ID:???
↑キター
0197nobodyさん04/02/13 17:14ID:???
>>195
bbspink.comとmachi.toが抜けてるよ。
(.)はわざと?
0198nobodyさん04/02/13 17:38ID:???
>>196>>197
ごめんなさい。素人なものでよくわからないのです・・・
任意の文字は、「(..)+」じゃないんでしょうか・・・
「.+」でいいですか?
http://(.+\.2ch\.net|.+\.bbspink\.com|.+\.machi\.to)/test/read\.cgi/.+/[0-9]{10}/
でいいでしょうか?
それと、Perlでは、10個の数字なら「\10d」でできたと思うのですが、PHPではできないみたいですね・・・
019919504/02/13 22:04ID:???
お騒がせしました。自分のダメダメでしたね。
http://([a-zA-Z0-9]+\.2ch\.net|[a-zA-Z0-9]+\.bbspink\.com|[a-zA-Z0-9]+\.machi\.to)/test/read\.cgi/[a-zA-Z0-9]+/[0-9]{10}/
これでOKですね。
0200nobodyさん04/02/14 02:42ID:???
正規表現でどう書くのかと言っても目的によって変わる場合があるからな
0201nobodyさん04/02/14 12:38ID:???
質問です。お師匠様よろしくお願いします。

次の文字列で、<!--from-->〜<!--to-->部分を除去する
正規表現が分からないです。

"あい<!--from-->か<>き<!--to-->うえ<!--from-->くけ<>こ<!--to-->お"
→「あいうえお」を取り出したい

自作の失敗正規表現
/<\!--from-->.*<\!--to-->//g
→「あいお」になってしまう。
0202nobodyさん04/02/14 12:46ID:???
>>201
Perlなら最短マッチ
.*?
0203nobodyさん04/02/14 12:54ID:???
>>202
よくばりを抑えることができました。
お師匠様ありがとうございました!
0204nobodyさん04/02/14 13:29ID:???
>>202
最短マッチ
できないやつってあるの?

C++のboost::regexも出来たよ
0205nobodyさん04/02/14 13:50ID:???
>>204
Perl4ダケダタ
スマソ
0206nobodyさん04/02/14 14:44ID:???
>>205
*awkやsedにもねぇだろ。
0207nobodyさん04/02/14 14:47ID:???
>>206
俺につっかからず
>>204に尾長居します
0208nobodyさん04/02/14 23:14ID:???
置換でimgタグのalt属性だけを全て検出するにはどうすればいいですか
今は

$title =~ s/.*?( alt=\".*?\")*/$1/gs;
$title =~ s/alt="//g;
$title =~ s/"//g;

とやっていますが、効率が悪いと言われました。
0209nobodyさん04/02/14 23:29ID:???
>>208
$title =~ s/.*? alt=\"(.*?)\"*/$1/gs;
ってことじゃないのか。
0210nobodyさん04/02/14 23:39ID:???
>>209
それだと
alt="Alt属性値">
↓
Alt属性値">
ですよね
0211nobodyさん04/02/14 23:43ID:???
そんでしかも
alt属性値は複数ある可能性もあるんです(<img>タグの個数が分からないため)
0212nobodyさん04/02/14 23:49ID:???
効率が悪いといわれた意味は、>>209じゃないかってことだ。
で、求めたいことをやるコードなら、今、プログラム板の
Perl質問箱でも答えたとこだが、
@title = ($_ =~ /.*? alt=\"(.*?)\"*/$1/g);
でよろしかろう。

0213nobodyさん04/02/15 00:04ID:???
あー
ヒントを得られたので改変して自己解決しました。

$title =~ s/.*?alt=\"([^"]*)[^(alt)]*/$1/gs;

これでできました。
どうもありがとうございました。
0214nobodyさん04/02/15 00:09ID:???
>>213
( ゚д゚)ハァ!?
ま、いいか
0215nobodyさん04/02/15 00:11ID:???
>>213
それだと・・・
ま、、いいや
0216nobodyさん04/02/15 00:24ID:???
え

何か問題があるんでしょうか・・・汗
0217nobodyさん04/02/15 00:28ID:???
あ

alt="〜"以降にaかlかtが含まれるとそれ以降がおかしな事に・・・
0218nobodyさん04/02/15 02:32ID:???
このスレおもしろいな。
0219nobodyさん04/02/15 02:58ID:P41SZm3C
例えば、こんな感じの文字列があって、
90020E68E8D0320A9028D14FF40AE7307BD5A8...
これに16文字ごとに00を挿入するにはどう書けばいいでしょうか?
こんな感じに出力したいのですが
0090020E68E8D0320A009028D14FF40AE730007BD5A8...
自分でチュートリアルみながらやってみたら
アホみたいに00で溢れてしまいました・・・
0220nobodyさん04/02/15 03:45ID:???
>>219
具体的にどうやったのかの正規表現も書いておいた方が
誰かが教えてくれる気になってくれる率高いよ
022121904/02/15 04:05ID:???
恥ずかしすぎるのですが自分の晒します
$output =~ s/\(................\)/00\1/gs;
0222nobodyさん04/02/15 04:20ID:???
$output = "90020E68E8D0320A9028D14FF40AE7307BD5A8";
$output =~ s/([0-9A-Z]{16})/\1xx/gs;
print $output;

00ができねー。
0223nobodyさん04/02/15 04:23ID:???
$output = "90020E68E8D0320A9028D14FF40AE7307BD5A8";
$output =~ s/([0-9A-Z]{16})/00\1/gs;
print $output;

頭00つきで・・・。
0224nobodyさん04/02/15 04:24ID:???
>>219
ああ、頭00でいいんだ〜。
0225nobodyさん04/02/15 04:29ID:???
#Perlだけどこれではいかんでしょうか

$output =~ s/([0-9A-F]{16})/$1_/g;
$output =~ s/_/00/g;

0226nobodyさん04/02/15 04:40ID:???
>>225
2度もやらなくたって>>223
022721904/02/15 05:27ID:???
みなさんありがとうございます
無事できますた
0228>>20804/02/15 09:16ID:???
で、結局出来たんですが、これもちょっとまだ違う(属性名に「a」があるものがalt以降に出てくるとエラー)なので・・・

$title =~ s/.*?alt=\"([^"]*)[^a]*?/$1$2/gs;
$title =~ s/([^"]*).*/$1/gs;

「alt」っていう文字列が出てくるまで、ってどういう風に表現するんでしょうか・・・・
紹介された他のスクリプトは全て期待通りの動きをしませんでした

$title=<<END;
<h1><img src="./hoge.png" width="10" height="10" alt="alt属性値"></h1>
<div id="id">
テストaltテスト<br>
</div>
<h2><img src="./hoge2.png" width="10" height="10" alt="alt属性値2"><img src="./hoge3.png" width="10" height="10" alt="alt属性値3"></2>
<div id="id">
テストaltテスト<br>
</div>
END

これに正規表現をかけて、$titleの中身を

alt属性値alt属性値2alt属性値3

に出来ればかなり近いものになると思うんですが・・・・
0229未承諾広告※ ◆aiY4htt2.2 04/02/15 10:17ID:???
print join '', $title =~ /alt="(.*?)"/g;
0230nobodyさん04/02/15 10:55ID:???
@array = ($title =~ /<img[^>]+alt="([^>]*)"[^>]*>/g);
0231nobodyさん04/02/15 16:22ID:???
/(ー_ー)/
0232nobodyさん04/02/16 14:35ID:???
$_ = '_ _';

print 'ごめんなさい' if m(_ _)m;
0233 04/02/21 11:23ID:ZPsBKiYf
VBScriptでの正規表現についてご指導をお願いします。
私は↓のサイトで、サッカーの試合後に出される選手の採点をVBScriptを使って集計しております。
http://www.geocities.co.jp/SiliconValley-SanJose/8260/shukeihouhou040220/shukeihouhou.html

例えば、 「中田:6.5」というカキコを読み込むのに
re.Pattern = "([a-zA-Zぁ-んァ-ヶー−一-鶴]+)[  ;:;:…]*(10\.0|10|9\.5|9\.0|9|8\.5|8\.0|8|7\.5|7\.0|7|6\.5|6\.0|6|5\.5|5\.0|5|4\.5|4\.0|4|3\.5|3\.0|3|2\.5|2\.0|2|1\.5|1\.0|1|0\.5|0\.0|0)"
とパターンを設定しているのですが、
2つの問題に直面しております。

一つの問題は選手名の読み込みです。
漢字コードの設定がうまくないために取り込めない選手がいます。
今のところ、「黒部」が「部」になってしまうということが起きています。

もう一つの問題は点数の読み込みです。
採点では0.0〜10.0まで0.5刻みで点数を評価します。
それ以外の数字は無視しようと思うのですが、
3.14だと3と認識してような現象がおきているようです。


以前はjperlで認識させてまして漢字コードに関しては
[a-zA-Zぁ-んァ-ヶー−亜-腕弌-熙]+
でやってて問題は起きなかったですが、VBSでは無理なようです。
適当に文字コード表を開いたら漢字が一で始まって鶴で終わってたので
これを適用したら、そこそこうまくいったのですが、「黒」はだめなようで・・・
0234nobodyさん04/02/21 13:17ID:???
第一水準漢字をUNICODE指定するんだったら、[一-龍]じゃない?
鶴のうしろに、
鷲 鷹 鷺 鹸 鹿 麓 麗 麟 麦 麹 麺 麻 麿 黄 黍 黒 黙 黛 鼎 鼓 鼠 鼻 齢 龍
これだけの文字が残ってるよ。

しかし、JScriptはUNICODEで範囲指定しなきゃならんのか……
あと、置換で面倒なことしてるとおもったら、trがないのか……
ドキュメントのRegExp.Execute()のところにSubMatchesコレクションの記述がまったくない……
0235nobodyさん04/02/21 14:01ID:X1kd7Gnd
すんません。
$short = 'hoge++';
という場合に
$long = 'hogehoge++';
にマッチするかどうか判定するにはどうしたらいいですか。
if ($long =~ /$short/) {}
だと ++ の部分でエラーが出ちゃうです。
0236 04/02/21 14:14ID:ZPsBKiYf
>>234
ありがとうございます。「黒部」が読み込めました。
選手名はこれでいけたっぽいです。

>置換で面倒なことしてるとおもったら、trがないのか
どうなんでしょうね。おいらが探しきれなかっただけかも・・・

>RegExp.Execute()のところにSubMatchesコレクションの記述がまったくない
すいません、意味わかんないっす
0237nobodyさん04/02/21 14:17ID:???
>>233
VBSは良く分からないけど、
(10|[0-9](\.[05])?)([^\.0-9]|$)
得点はこんな感じでどうでしょ。

>>235
Perlなら
if ($long =~ /\Q$short/) {}
0238nobodyさん04/02/21 14:20ID:???
>>237
ありがとうございましたぁあああああああああ!!!!
0239 04/02/21 15:28ID:ZPsBKiYf
>>237
ありがとうございます。
しかしそれだと10.0が読み込めないようです。
(10\.0|10|[0-9](\.[05])?)([^\.0-9]|$)
こうすればいいのかな?
0240nobodyさん04/02/21 16:27ID:???
>>239
いいんじゃない?

あと、
(10(\.0)?|[0-9](\.[05])?)([^\.0-9]|$)
こんなでも。
0241 04/02/21 16:31ID:ZPsBKiYf
>>240
�dクス!!ありがとうございます。
これで解決です。
0242nobodyさん04/02/21 16:44ID:TmSpuw1E
ひらがな、漢字、カタカナのみを
許可したい場合どうしますか?

if($FORM{'name'} =~ /\w/g) { &error; }

や

if($FORM{'name'} !~ /\W/g) { &error; }
if($FORM{'name'} =~ /[a-zA-Z0-9]/g) { &error; }

では、カタカナを受け付けなくなってしまい、


if($FORM{'name'} !~ /\W/g) { &error; }
if($FORM{'name'} =~ /[A-Z0-9]/g) { &error; }

だと、アルファベット小文字が使えてしまいます。
0243nobodyさん04/02/21 16:59ID:???
>>242
文字コードどうしてる?
0244nobodyさん04/02/21 17:22ID:???
>>243
すいません、書くの忘れました。
shift-jisとなっています。
■ このスレッドは過去ログ倉庫に格納されています